如何提取这两个数字;下面列出的,分别来自java。中的字符串(1,2)
。
String s="(1,2)";
,输出应为:
int x=1;
int y=2;
或者字符串中列出的任何数字。 。
答案 0 :(得分:2)
方法:
public static void main(String[] args) {
String s = "(1,2)";
System.out.println("x=" + s.substring(1, s.indexOf(",")));
System.out.println("y=" + s.substring(s.indexOf(",")+1, s.length()-1));
}
将提供以下输出:
x=1
y=2
如果数字有多个数字,这甚至可以使用。
答案 1 :(得分:1)
String str = " abc d 1234567890pqr 54897";
Pattern pattern = Pattern.compile("\\w+([0-9]+)\\w+([0-9]+)");
Matcher matcher = pattern.matcher(str);
for (int i = 0; i < matcher.groupCount(); i++) {
matcher.find();
System.out.println(matcher.group());
}
答案 2 :(得分:1)
您可以使用正则表达式来实现此目的。
以下正则表达式将起作用。
\((\d+),(\d+)\)
要试用,请转到Rubular
将\((\d+),(\d+)\)
粘贴到正则表达式&#39;框。在&#39;您的测试字符串&#39;中键入测试字符串,例如(123,4567)。框。
你应该在比赛组中看到你的答案。
在java中,您必须解析这些匹配的字符串以转换为Integer。
答案 3 :(得分:0)
String中的每个字符实际上都是一个char。因此,使用该信息,您可以使用foreach
循环或for
循环,无论字符串是多长(s.length();
)。
ASCII数字字符的值范围为61到71。
你可以这样做:
List<short> listOfStringNum = new ArrayList<>();
char tempChar;
//Loop
for(int i = 0; i < s.length(); i++) {
tempChar = s.charAt(i);
if(tempChar >= 61 & tempChar <= 71)
listOfStringNum.add((short) Character.getNumericValue(tempChar));
}
//Then do whatever is desired with the list e.g.
System.out.println("Location: ");
System.out.println("X = " + listOfStringNum.get(0) +
"\nY = " + listOfStringNum.get(1));
我希望这有助于:)