Получите только символ валюты с регулярным выражением в Dart

#regex #dart #currency

Вопрос:

Я пытаюсь получить символ валюты из String Dart, используя регулярное выражение:

 void main() {
  const String string = '€ 1,500.50';
  final RegExp regExp = RegExp(r'([\p{Sc}])', unicode: true);
  final Iterable<Match> matches = regExp.allMatches(string);

  final onlyCurrency = StringBuffer();
  for (final Match match in matches) {
    onlyCurrency.write(match.group(0));
  }
  
  print(onlyCurrency);
}
 

но это не работает. Как я могу получить только символ валюты (что бы это ни было) с регулярным выражением в Dart?

Большое спасибо!

Ответ №1:

Вам нужно удалить класс символов — это избыточно — и использовать p{Sc} , так как вы определяете регулярное выражение внутри необработанного строкового литерала.

Решение состоит в том, чтобы

 void main() {
  const String string = '€ 1,500.50';
  final RegExp regExp = RegExp(r'p{Sc}', unicode: true);
  final Iterable<Match> matches = regExp.allMatches(string);

  final onlyCurrency = StringBuffer();
  for (final Match match in matches) {
    onlyCurrency.write(match.group(0));
  }
  
  print(onlyCurrency);
}
 

Комментарии:

1. Большое спасибо!