在字符串中查找数据

时间:2014-03-09 10:29:45

标签: java string

我正在尝试找到一种循环字符串并在两个字符内获取数据的方法,例如......我有以下字符串。

String test = "<172>Lorem Ipsum";

假设我想要两个字符之间的数据'&lt;' &安培; '&GT;' 所以结果应该是“172”

现在,如果字符串在每次之间都是3位数,那么使用子字符串就可以了,但事实并非如此,因为这个字符串会发生变化,所以假设这个字符串可能是

String test = "<9>Lorem Ipsum"

我需要结果为“9”

我应该如何获取此信息。

6 个答案:

答案 0 :(得分:1)

String data = test.substring(test.indexOf("<")+1,test.indexOf(">"));

答案 1 :(得分:1)

代码如下:

String test = "<172>Lorem Ipsum";
int index1 = test.indexOf('<');
int index2 = test.indexOf('>', index1);

String result = test.substring(index1 + 1, index2);
System.out.println("result = " + result);

结果:

result = 172

答案 2 :(得分:1)

您可以使用正则表达式来获取所需的数据。 这样的事可能

Pattern p = Pattern.compile("^<(\\d+)>");
Matcher m = p.matcher("<172>Lorem Ipsum");
if (m.find())
    System.out.println(m.group(1));
else
    System.out.println("your string doesn't start with \"<digits>\"");

答案 3 :(得分:0)

事实上,你也可以尝试将replaceAll与正则表达式一起使用。

System.out.println("<172>Lorem Ipsum".replaceAll(".*<|>.*", ""));

答案 4 :(得分:0)

尝试这样的事情:

public Test() {
    String test = "<172>Lorem Ipsum";
    String number = "";
    if (test.startsWith("<")) {
        for (int index = 1 ; index < test.length() ; index++) {
            if (!test.substring(index, index+1).equals(">")) {
                number += test.substring(index, index+1);
            } else {
                break;
            }
        }
    }
    System.out.println(number);
}

答案 5 :(得分:0)

     int leftBound = data.indexOf("<");
     int rightBound = data.indexOf(">");
     data.substring(leftBound+1, rightBound));

想出来。这是其中一个“问”,然后立即弄清楚事情。