从字符串中提取坐标

时间:2014-08-04 13:52:18

标签: java

如何提取这两个数字;下面列出的,分别来自java。中的字符串(1,2)

String s="(1,2)";

,输出应为:

int x=1;
int y=2;

或者字符串中列出的任何数字。 。

4 个答案:

答案 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));

我希望这有助于:)