Розділення рядка на числа та текст у Dart/Flutter

Розділення рядка на числа та текст у Dart/Flutter

3 Березня 2024 в 11:45 49

У розробці Flutter часто виникає потреба розділити рядок на числа та текст для подальшої обробки окремо. Це особливо актуально у випадках, коли рядок містить числові значення разом з одиницями виміру. У цій статті ми розглянемо, як зручно реалізувати цей процес у Dart, мові програмування, що використовується в Flutter.

Припустимо, ми маємо рядок, який містить число та одиницю виміру, наприклад: “150 г”. Нам потрібно розділити цей рядок таким чином, щоб отримати числове значення та одиницю виміру окремо для подальшої обробки. Оскільки ми працюємо з метричною системою одиниць, ми розглянемо такі одиниці виміру, як грами (g), кілограми (kg), літри (l) та мілілітри (ml).

Наша мета полягає у написанні функції, яка приймає рядок і повертає масив, що містить числове значення та одиницю виміру. При цьому значення в грамах та мілілітрах повинні бути незмінними, а значення у кілограмах та літрах переведені до грамів та мілілітрів відповідно.

Давайте розглянемо приклади вхідних та вихідних даних для нашої функції:

Зауважте, що значення “2 л” перетворено у “2000 мл”, а “1 кг” у “1000 г”. Це відбувається для зручності подальшого обчислення та роботи з одиницями виміру.

Давайте перейдемо до написання функції у Dart:

Ця функція виконує наступні дії:

  1. Видаляє пробіли зі вхідного рядка.
  2. Перевіряє, яка одиниця виміру присутня у рядку (мл, г, кг, л).
  3. Замінює відповідну одиницю виміру на порожній рядок.
  4. Якщо в рядку присутня мілілітра (мл), функція повертає значення без змін, як і вхідний рядок.
  5. Якщо присутня грам (г), функція повертає значення без змін.
  6. Якщо присутня кілограм (кг), значення переводиться в грами (value * 1000) та округляється до двох знаків після коми.
  7. У всіх інших випадках (л), значення також переводиться в грами (value * 1000) та округляється.

Таким чином, ми отримали зручну функцію для розділення рядка на числа та текст у Flutter за допомогою Dart. Вона дозволяє нам ефективно обробляти значення, що містяться в рядку, та працювати з ними окремо, що є дуже зручним у розробці мобільних додатків.