我正在尝试将 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"];
}
}
代码:
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 [];
}
}
如果有任何问题,请随时问我。