Обрезка пробелов в строках Dart от начала или до конца
Я очень плохо знаком с Дартом и пытаюсь понять основные библиотеки. Для строк предусмотрена функция trim(). Это хорошо, но нет ли очевидных способов обрезать пробелы только в начале или только в конце строки? Я не могу их найти. Спасибо.
3 ответа
Не существует специальных методов для обрезки только начальных или конечных пробелов. Но их довольно легко реализовать:
/// trims leading whitespace
String ltrim(String str) {
return str.replaceFirst(new RegExp(r"^\s+"), "");
}
/// trims trailing whitespace
String rtrim(String str) {
return str.replaceFirst(new RegExp(r"\s+$"), "");
}
В библиотеке MoreDart есть несколько помощников, вдохновленных Guava, которые позволяют эффективно обрезать строки от начала, конца или обоих:
import 'package:more/char_matcher.dart';
...
var whitespace = new CharMatcher.whitespace(); // what to trim
whitespace.trimFrom(input); // trim from beginning and end
whitespace.trimLeadingFrom(input); // trim from beginning
whitespace.trimTrailingFrom(input); // trim from end
Мы только добавили trimLeft
а также trimRight
в дрожь сегодня, хотя оказывается, что они также добавляются к String
в будущем выпуске SDK. Вы можете использовать Quiver сегодня, хотя.
Разница между этими реализациями и решением на основе регулярных выражений состоит в том, что определение пробела такое же, как String.trim
, Regex распознает меньше пробельных символов.