将String拆分为float和string

时间:2013-11-24 08:39:12

标签: java regex split

如何将100.26kg拆分为System.out.println

100.26
kg

我尝试使用(“\ d +”),但没有成功。

String[] num = myTextCount.split("\\d+");

100.26kg可能会根据用户输入而有所不同。它可以是100.26千克,100克,100磅或100升。如果有任何方法可以分割数字和字母,那将非常有用

6 个答案:

答案 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]