При работе со строками в Dart иногда необходимо извлечь из строковых данных определенные числовые значения, например двойные числа. В этой статье мы рассмотрим различные методы извлечения двойных значений из строки в Dart, а также приведем примеры кода для каждого метода.
Метод 1: использование регулярных выражений
Регулярные выражения предоставляют мощный способ сопоставления и извлечения шаблонов из строк. В Dart мы можем использовать регулярные выражения для извлечения двойных значений из строки. Вот пример:
import 'dart:core';
void main() {
String text = 'The price is $12.34';
RegExp regExp = RegExp(r'(\d+\.\d+)');
Iterable<Match> matches = regExp.allMatches(text);
for (Match match in matches) {
String doubleString = match.group(0);
double doubleValue = double.parse(doubleString);
print(doubleValue);
}
}
В этом примере мы определяем шаблон регулярного выражения (\d+\.\d+), который соответствует одной или нескольким цифрам, за которыми следует десятичная точка и одна или несколько цифр. Затем мы используем метод allMatches(), чтобы найти все вхождения шаблона в заданной строке. Наконец, мы извлекаем совпадающие двойные строки и преобразуем их в фактические значения Double, используя double.parse().
Метод 2: использование разделения и синтаксического анализа.
Другой подход заключается в разделении строки на подстроки на основе разделителя и анализе каждой подстроки, чтобы проверить, представляет ли она допустимый тип double. Вот пример:
import 'dart:core';
void main() {
String text = 'The price is $12.34';
List<String> words = text.split(' ');
for (String word in words) {
double doubleValue = double.tryParse(word);
if (doubleValue != null) {
print(doubleValue);
}
}
}
В этом примере мы разделяем строку textна слова, используя пробел в качестве разделителя. Затем мы перебираем каждое слово и пытаемся проанализировать его как двойное, используя double.tryParse(). Если анализ прошел успешно, мы печатаем извлеченное двойное значение.
Метод 3: использование специального синтаксического анализатора
Если строка содержит определенный формат для двойных значений, вы можете реализовать собственный синтаксический анализатор для извлечения двойных значений. Вот пример:
import 'dart:core';
void main() {
String text = 'The prices are: 12.34, 56.78, 90.12';
List<String> doubles = text.split(', ');
for (String doubleString in doubles) {
double doubleValue = customDoubleParser(doubleString);
print(doubleValue);
}
}
double customDoubleParser(String doubleString) {
// Implement your custom parsing logic here
}
В этом примере мы разделяем строку textна отдельные двойные строки, используя символы запятой и пробела в качестве разделителей. Затем мы вызываем специальную функцию синтаксического анализатора customDoubleParser(), чтобы преобразовать каждую строку типа double в значение типа double. Вы можете реализовать свою собственную логику синтаксического анализа внутри функции customDoubleParser()на основе конкретного формата двойных значений в вашей строке.
Извлечение двойных значений из строки в Dart можно выполнить различными методами. В этой статье мы рассмотрели три различных подхода: использование регулярных выражений, использование разделения и синтаксического анализа и использование специального синтаксического анализатора. Каждый метод имеет свои преимущества и может быть выбран в зависимости от конкретных требований вашего варианта использования.
Не забывайте обрабатывать возможные случаи ошибок при извлечении двойных значений из строк, чтобы гарантировать правильное поведение вашего кода во всех сценариях. Приятного кодирования!