Java分离String和Integer

时间:2014-02-20 15:16:06

标签: java string int

大家好我希望将Java中的字符串剥离为字符串和整数,例如:

"String1"

成:

String StringName = "String";
int StringInt = 1;

字符串的长度也可能不同,在Java中有一种简单的方法可以做到这一点,如果容易完成新手就道歉。

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式执行此操作:(.*?)(\\d+)$ 让我从最后开始解释这一点。 $匹配字符串的结尾(我在这里不考虑多行字符串)。 \d(在java代码中需要转义为\\d)匹配任何数字,因此最后一个捕获组匹配字符串末尾的整数。第一组匹配前面的所有字符。第一组中需要非贪婪的评估*?,否则它将匹配整个字符串。

作为一个整体工作的例子:

Matcher m = Pattern.compile("(.*?)(\\d+)$").matcher(yourString);
if (m.matches()) {
    String stringPart = m.group(1);
    int intPart = Integer.parseInt(m.group(2));
}

答案 1 :(得分:1)

如果数字始终位于字符串的末尾,请编写一个方法,该方法从结尾开始迭代字符串,直到您遇到非整数字符,然后使用您刚刚找到的索引获取子字符串。在大多数情况下,这可能比正则表达式更快,因为对于O(n)方法,迭代字符串的结尾将为n=[num_integers](其中O(1))+ substring

答案 2 :(得分:1)

String stringName[<maximum length>]
int stringInt;
for( int i = 0; i < originalString.length(); i++){
   if(isDigit(originalString[i]){
      stringInt = originalString[i];
   }
   else{
      stringName[i] = originalString[i];
   }
}

这应该将原始字符串中的所有字符移动到stringName中,除非出现一个将保存在stringInt中的整数值

答案 3 :(得分:-1)

我建议使用正则表达式。

String value = "string12asd";
String intValue = value.replaceAll("[^0-9]", "");
String stringValue = value.replaceAll("[0-9]","");
System.out.println("int are: "+intValue+" \n string are: "+stringValue);

请查看http://www.regular-expressions.info/tutorial.html以获取有关正则表达式的更多详细信息。