在 Dart/Flutter 中将字符串拆分为数字和文本

问题描述 投票:0回答:1

我正在尝试将 flutter 中的字符串划分为文本和数字。 该字符串由一个数字和一个公制单位组成。我的目标是将数字与度量分开,以便单独处理它们

这些信息的单位为 g(克)、kg(千克)、l(升)和 ml(毫升),甚至可能更多。 该方法的输出应仅具有以克和毫升为单位的值。其他的应该按这些来计算。我如何在 dart 中轻松实现这一点,因为无休止的 if 查询对我来说似乎是错误的。

示例值: "22g"=> ["22","g"] |"150 g"=> ["150","g"] |"120ml"=> ["120","ml"] |"2 l" => ["2000","毫升"] |"1公斤" => ["1000","克"]

我现在的方式是这样的:

List<String> splitString(String input) {
    input = input.replaceAll(" ", "");
    if (input.contains("ml")) {
      String number = input.replaceAll("ml", "");
      return [number, "ml"];
    } else if(input.contains("g")){
      String number = input.replaceAll("g", "");
      return [number, "g"];
    } else if(input.contains("kg")){
      String number = input.replaceAll("kg", "");
      double value = double.parse(number) * 1000;
      return [value.toStringAsFixed(2), "g"];
    } else{
      String number = input.replaceAll("l", "");
      double value = double.parse(number) * 1000;
      return [value.toStringAsFixed(2), "ml"];
    }
  }
regex string flutter dart split
1个回答
0
投票

代码:

void main() {
  String input = "22g";
  List<String> result = splitString(input);
  print(result); // Output: [22, g]
}

List<String> splitString(String input) {
  RegExp regex = RegExp(r'^(\d+)([a-zA-Z]+)$');
  Match? match = regex.firstMatch(input) as Match?;
  if (match != null) {
    String numberPart = match.group(1)!;
    String alphabetPart = match.group(2)!;
    return [numberPart, alphabetPart];
  } else {
    return [];
  }
}

如果有任何问题,请随时问我。

© www.soinside.com 2019 - 2024. All rights reserved.