Обрезка пробелов в строках 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 распознает меньше пробельных символов.

http://pub.dartlang.org/packages/quiver

Другие вопросы по тегам