如何将100.26kg拆分为System.out.println
100.26
kg
我尝试使用(“\ d +”),但没有成功。
String[] num = myTextCount.split("\\d+");
100.26kg可能会根据用户输入而有所不同。它可以是100.26千克,100克,100磅或100升。如果有任何方法可以分割数字和字母,那将非常有用
答案 0 :(得分:1)
尝试环顾正则表达式,
String[] num = myTextCount.split("(?<=\\d)(?=[a-z])|(?<=[a-z])(?=\\d)");
如果您想将case-insensitive
与数字分开而不是使用(?i)
String[] num = myTextCount.split("(?i)(?<=\\d)(?=[a-z])|(?<=[a-z])(?=\\d)");
答案 1 :(得分:0)
请勿使用Split
,只需使用String.IndexOf()
功能即可。
答案 2 :(得分:0)
myTextCount.split("[\\.\\d]+")
将为您提供包含第二部分的[,kg],然后使用#indexOf()查找第一部分。
答案 3 :(得分:0)
试试这个:
private static final Pattern VALID_PATTERN = Pattern.compile("[0-9]+|[A-Z]+");
private List<String> parse(String toParse) {
List<String> chunks = new LinkedList<String>();
Matcher matcher = VALID_PATTERN.matcher(toParse);
while (matcher.find()) {
chunks.add( matcher.group() );
}
return chunks;
}
此解决方案也非常模块化。
答案 4 :(得分:0)
import java.util.Scanner;
public class Sample {
public static void main(String[] args) {
String inputs[] = { "100.26kg", "100g", "100 pounds", "100litre"};
String weight, unit;
for(String input : inputs){
Scanner scan = new Scanner(input);
weight = scan.findInLine("\\d+(\\.\\d+)?");
unit = scan.next();//scan.next("\\w+");
System.out.println(weight);
System.out.println(unit);
}
}
}
答案 5 :(得分:0)
Matcher m = Pattern.compile("^([0-9.]+)\\s*([a-zA-Z]+)$").matcher("");
String inputs[] = {"100.26kg", "1 pound", "98gallons" };
for(String input: inputs)
{
if ( m.reset(input).find() )
{
System.out.printf("amount=[%s] unit=[%s]\n", m.group(1), m.group(2) );
}
}
的产率:
amount=[100.26] unit=[kg]
amount=[1] unit=[pound]
amount=[98] unit=[gallons]