在Android中,如何将数字与文本分开?

在Android中,如何将数字与文本分开?,android,separator,Android,Separator,这是我的代码: String addchar = ""; String tempchar; int len = strline.length(); char[] chars = strline.toCharArray(); int amount = 0; for (int i = 0; i < len; i++) { tempchar = String.valueOf(chars[i]); if (tempchar == "0" || tempchar == "1" ||

这是我的代码:

String addchar = "";
String tempchar;
int len = strline.length();
char[] chars = strline.toCharArray();
int amount = 0;

for (int i = 0; i < len; i++) {
    tempchar = String.valueOf(chars[i]);
    if (tempchar == "0" || tempchar == "1" || tempchar == "2" || tempchar == "3" || tempchar == "4" || tempchar == "5" || tempchar == "6" || tempchar == "7" || tempchar == "8" || tempchar == "9") {
        addchar=tempchar+addchar;
    }
}

amount=Integer.parseInt(addchar);
但当运行此代码时,我看到金额为空! 我想提取strline中的数字

试试这个使用匹配器

  Matcher matcher = Pattern.compile("\\d+").matcher("a22dsdddd212");
while(matcher.find()) {
    Log.e("number :-> ",matcher.group()+"");
}

如果需要所有数字字符,可以通过以下方式使用replaceALL:

String numericString = strline.replaceAll("[^0-9]", "");
然后使用ParseInt


希望能有所帮助。

比尼莱什的回答略逊一筹,但作为替代:

StringBuilder sb = new StringBuilder();

for (char c : strline.toCharArray()) {
    if ((sb.length() == 0 && "-".equals(c)) || Character.isDigit(c)) sb.append(c);
}

int amount = Integer.parseInt(sb.toString());

编辑修改以允许初始负号

您希望输入哪种类型?我的号码已签名也是一个选项,尽管使用\\d可能更好\d可能无法与parseInt配合使用。有关\n和0之间的一些差异,请参阅-9@AzadGh如果这些答案中有任何一个有帮助,请单击✓@AzadGh单击我的答案左侧的复选框以接受itI有其他问题我的号码已签名如何获得号码符号?我有其他问题:我的号码已签名如何获得号码符号-或+?更新了我的答案。只要还没有找到数字,它就允许使用减号。忽略+作为缺少负数将推断出正值。