У розробці Flutter часто виникає потреба розділити рядок на числа та текст для подальшої обробки окремо. Це особливо актуально у випадках, коли рядок містить числові значення разом з одиницями виміру. У цій статті ми розглянемо, як зручно реалізувати цей процес у Dart, мові програмування, що використовується в Flutter.
Припустимо, ми маємо рядок, який містить число та одиницю виміру, наприклад: “150 г”. Нам потрібно розділити цей рядок таким чином, щоб отримати числове значення та одиницю виміру окремо для подальшої обробки. Оскільки ми працюємо з метричною системою одиниць, ми розглянемо такі одиниці виміру, як грами (g), кілограми (kg), літри (l) та мілілітри (ml).
Наша мета полягає у написанні функції, яка приймає рядок і повертає масив, що містить числове значення та одиницю виміру. При цьому значення в грамах та мілілітрах повинні бути незмінними, а значення у кілограмах та літрах переведені до грамів та мілілітрів відповідно.
Давайте розглянемо приклади вхідних та вихідних даних для нашої функції:
1 2 3 4 5 |
"22 г" => ["22", "г"] "150 г" => ["150", "г"] "120 мл" => ["120", "мл"] "2 л" => ["2000", "мл"] "1 кг" => ["1000", "г"] |
Зауважте, що значення “2 л” перетворено у “2000 мл”, а “1 кг” у “1000 г”. Це відбувається для зручності подальшого обчислення та роботи з одиницями виміру.
Давайте перейдемо до написання функції у Dart:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
List<String> splitString(String input) { input = input.replaceAll(" ", ""); if (input.contains("мл")) { String number = input.replaceAll("мл", ""); return [number, "мл"]; } else if(input.contains("г")){ String number = input.replaceAll("г", ""); return [number, "г"]; } else if(input.contains("кг")){ String number = input.replaceAll("кг", ""); double value = double.parse(number) * 1000; return [value.toStringAsFixed(2), "г"]; } else{ String number = input.replaceAll("л", ""); double value = double.parse(number) * 1000; return [value.toStringAsFixed(2), "мл"]; } } |
Ця функція виконує наступні дії:
Таким чином, ми отримали зручну функцію для розділення рядка на числа та текст у Flutter за допомогою Dart. Вона дозволяє нам ефективно обробляти значення, що містяться в рядку, та працювати з ними окремо, що є дуже зручним у розробці мобільних додатків.