数字前的子串

时间:2014-05-06 10:50:48

标签: java android string

我有:

String word = "It cost me 500 box 

我想要做的是这样显示这句话:

It cost me

500 box 

我需要一个通用的方法,不仅仅是这个例子。 你能帮助我吗?

3 个答案:

答案 0 :(得分:2)

根据建议你可以使用正则表达式来完成这项工作,下面是一个代码片段,可以帮你解决问题:

    String word = "It cost me 500 box";
    Pattern p = Pattern.compile("(.* )([0-9].*)");
    Matcher m = p.matcher(word);
    if(m.matches()) {
        System.out.println(m.group(1));
        System.out.println(m.group(2));
    }

希望这有帮助。

答案 1 :(得分:1)

不是最佳方式,而是一种简单方法:

在您的活动之上:

String finalText="";
public static boolean isNumber(String string)  
{  
  try  
  {  
    double d = Double.parseDouble(string);  
  }  
  catch(NumberFormatException e)  
  {  
    return false;  
  }  
  return true;  
}   

在您的代码中:

String word = "It cost me 500 box";
        for (int i=0 ; i<word.length() ; i++){
            String a = Character.toString(word.charAt(i));
            if (isNumber(a)){
                finalText+="\n";
                for (int j=i ; j<word.length() ; j++){
                    String b = Character.toString(word.charAt(j));
                    finalText+=b;
                }
                i = word.length();
            }
            else{
                finalText+=a;
            }
        }
        textView.setText(finalText);

答案 2 :(得分:0)

我不知道是否还有我所知道的内置功能,但这样做的一种方法是:

void match(String string) {
    int numIndex = -1;
    int charIndex = 0;

    if (string.length() > 0) {  
        while (numIndex == -1 && charIndex < string.length()) {
            if (Character.isDigit(string.charAt(charIndex)))
                numIndex = charIndex;
            charIndex++;
        }
    }

    if (numIndex != -1) {
        System.out.println(string.substring(0, numIndex));
        System.out.println(string.substring(numIndex));
    }

}