2013-01-01 15 views
7

Jestem bardzo nowy w Dart i próbuję zrozumieć podstawowe biblioteki. W przypadku łańcuchów dostępna jest funkcja trim(). To jest dobre, ale czy nie istnieją oczywiste sposoby przycinania białych znaków tylko na początku lub tylko na końcu ciągu? Nie mogę ich znaleźć. Dziękuję.Przycinanie białych znaków w ciągach Dart od początku lub końca

+2

Zgadzam się, że to dziwna luka. Złożyłem skargę na tę samą rzecz jakiś czas temu. Obecnie można go ustawić w następnym kroku. Opisz ten błąd: http://code.google.com/p/dart/issues/detail?id=5589&q=ltrim&colspec=ID%20Type%20Status%20Priority%20Area%20Milestone%20Owner%20Podsumowanie –

+0

Ten problem został rozwiązany. –

Odpowiedz

4

Nie ma konkretnych metod przycinania tylko początkowych lub końcowych białych znaków. Ale jest to dość łatwe do wdrożenia ich:

/// 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+$"), ""); 
} 
+0

Zgadzam się również, że powinny to być tylko metody String. Zaznacz błąd związany z powyższym. –

1

Biblioteka MoreDart ma pewne Guava inspirowane pomocników, które pozwalają sprawnie przyciąć sznurki od początku, końcu lub oba:

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 
1

Właśnie dodaliśmy trimLeft i trimRight do Quiver dzisiaj, chociaż okazuje się, że są one również dodawane do String w przyszłym wydaniu SDK. Możesz użyć Quiver dzisiaj.

Różnica między tymi implementacjami i rozwiązaniem opartym na Regeksie polega na tym, że definicja białych znaków jest taka sama jak String.trim. Regex rozpoznaje mniej białych znaków.

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

Powiązane problemy