获取Java中String的特定部分

时间:2012-03-19 13:31:32

标签: java string

我想得到一个字符串的特定部分,如:

@org.junit.runners.Suite$SuiteClasses(value=[class data.XTest
, class data.YTest])

data.XTestdata.YTest是可变的。 什么是在class之后获得课程的最佳方式。

必需的输出:

sTring[0] = data.XTest;
sTring[1] = data.YTest;

4 个答案:

答案 0 :(得分:2)

我会使用正则表达式。

// uses capturing group for characters other than "," "]" and whitespace...
Pattern pattern = Pattern.compile("class ([^,\\]\\s]+)");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

产量

data.XTest
data.YTest

为您的示例输入字符串。适应您的要求。

答案 1 :(得分:2)

这个单行怎么样:

String[] parts = input.replaceAll(".*\\[class (.*)\\].*", "$1").split(", class ");

首先使用正则表达式提取"...[class ""]"之间的子串,然后在分离字符上拆分以巧妙地拔出目标字符串。

这是一个测试:

public static void main(String[] args) {
    String input = "@org.junit.runners.Suite$SuiteClasses(value=[class data.XTest, class data.YTest])";
    String[] parts = input.replaceAll(".*\\[class (.*)\\].*", "$1").split(", class ");
    System.out.println(Arrays.toString(parts));
}

输出:

[data.XTest, data.YTest]

答案 2 :(得分:1)

String s = "@org.junit.runners.Suite$SuiteClasses(value=[class data.XTest, class data.YTest])";
String temp = "value=[class ";
s = s.substring(s.indexOf(temp) + temp.length(), s.indexOf("])"));
String[] arr = s.split(", class ");
// sTring[0] = arr[0];
// sTring[1] = arr[1];
System.out.println(arr[0]);
System.out.println(arr[1]);

<强>输出:

data.XTest
data.YTest

答案 3 :(得分:1)

您的数据看起来很像toString类的Class方法。您可能希望使用注释和Class类可用的API。我想像是这样的事情:

SuiteClasses a = ...; <- Put the annotation object here instead of calling toString on it
Class[] c = a.value();
sTring[0] = c[0].getName();
sTring[1] = c[1].getName();
应该这样做。

相关问题