我正试图从int
获得String
。 String
始终为:
"mombojumbomombojumbomombojumbomombojumbomombojumbomombojumbohello=1?fdjaslkd;fdsjaflkdjfdklsa;fjdklsa;djsfklsa;dfjklds;afj=124214fdsamf=352"
所有这一切中唯一不变的是,我将有"hello="
后跟一个数字。有了这个,我无法弄清楚如何在"hello="
之后提取数字。这是我到目前为止没有运气的尝试。
编辑:该号码后面会跟一个“?”
String[] tokens = s.split("hello=");
for (String t : tokens)
System.out.println(t);
我无法弄清楚如何将其与int
的两侧隔离开来。
答案 0 :(得分:13)
Pattern p = Pattern.compile("hello=(\\d+)");
Matcher m = p.matcher (s);
while (m.find())
System.out.println(m.group(1));
这会设置搜索s
中包含hello =后跟一个或多个数字(\\d+
表示一个或多个数字)的任何位置。循环查找此模式的每次出现,然后每当找到匹配时,m.group(1)
将提取数字(因为这些数字在模式中分组)。
答案 1 :(得分:2)
您应该使用regular expression:
String str = "mombojumbomombojumbomombojumbomombojumbomombojumbomombojumbohello=1fdjaslkd;fdsjaflkdjfdklsa;fjdklsa;djsfklsa;dfjklds;afj=124214fdsamf=352";
Pattern p = Pattern.compile("hello=(\\d+)");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println(m.group(1)); // prints 1
}
答案 2 :(得分:1)
试试这个:
String r = null;
int col = s.indexOf("hello="); // find the starting column of the marker string
if (col >= 0) {
String s2 = s.substring(col + 6); // get digits and the rest (add length of marker)
col = 0;
// now find the end of the digits (assume no plus or comma or dot chars)
while (col < s2.length() && Character.isDigit(s2.charAt(col))) {
col++;
}
if (col > 0) {
r = s2.substring(0, col); // get the digits off the front
}
}
r将是您想要的字符串,如果没有找到数字,它将为null。
答案 3 :(得分:0)
这是另一种非正则表达式方法。为方便起见,包含在方法中
辅助方法
public static Integer getIntegerForKey(String key, String s)
{
int startIndex = s.indexOf(key);
if (startIndex == -1)
return null;
startIndex += key.length();
int endIndex = startIndex;
int len = s.length();
while(endIndex < len && Character.isDigit(s.charAt(endIndex))) {
++endIndex;
}
if (endIndex > startIndex)
return new Integer(s.substring(startIndex, endIndex));
return null;
}
用法
Integer result = getIntegerForKey("hello=", yourInputString);
if (result != null)
System.out.println(result);
else
System.out.println("Key-integer pair not found.");
答案 4 :(得分:0)
另一种非正则表达式解决方案:
String str = "mombojumbomombojumbomombojumbomombojumbomombojumbomombojumbohello=142?fdjaslkd;fdsjaflkdjfdklsa;fjdklsa;djsfklsa;dfjklds;afj=124214fdsamf=352";
char arr[] = str.substring(str.indexOf("hello=")+6).toCharArray();
String buff ="";
int i=0;
while(Character.isDigit(arr[i])){
buff += arr[i++];
}
int result = Integer.parseInt(buff);
System.out.println(result);