我在java中有一个字符串,例如:
String myString = "MYVAR1(some data[some text]) SOMEVAR(table spoon fork(chairs cloths)[cups] ANOTHERVAR(balloons{clowns} bubbles)"
该字符串包含我需要从中提取信息的变量。我正在寻找的最终结果是这样的:
String myVar = "(some data[some text])"
String someVar = "(table spoon fork(chairs cloths)[cups]"
String anotherVar = "(balloons{clowns} bubbles)"
字符串也可能是:
String myString = "MYVAR1(some data[some text]) SOMEVAR(table spoon fork(chairs cloths)[cups]"
结果应该是:
String myVar = "(some data[some text])"
String someVar = "(table spoon fork(chairs cloths)[cups]"
String anotherVar = ""
我试过了:
String[] parts = string.split("MYVAR1");
但这会让我得到一切,而不仅仅是MYVAR1的内容。
答案 0 :(得分:1)
试试这个
public class TestClass {
public static void main(String a[]){
String myString = "MYVAR1(some data[some text]) SOMEVAR(table spoon fork(chairs cloths)[cups] ANOTHERVAR(balloons{clowns} bubbles)";
System.out.println("myVar = " + getValue(myString, "MYVAR1", "SOMEVAR"));
System.out.println("someVar = " + getValue(myString, "SOMEVAR", "ANOTHERVAR"));
System.out.println("anotherVar = "+ getValue(myString, "ANOTHERVAR", null));
System.out.println();
myString = "MYVAR1(some data[some text]) SOMEVAR(table spoon fork(chairs cloths)[cups]";
System.out.println("myVar = " + getValue(myString, "MYVAR1", "SOMEVAR"));
System.out.println("someVar = " + getValue(myString, "SOMEVAR", "ANOTHERVAR"));
System.out.println("anotherVar = " + getValue(myString, "ANOTHERVAR", null));
}
private static String getValue(String myString, String name,String nextName){
if(myString == null || name == null) return "";
int a = myString.indexOf(name);
if (a == -1) return "";
if(nextName == null){
return myString.substring(a+name.length());
}
else {
int b = myString.indexOf(nextName);
if(b>-1){
return myString.substring(a + name.length(), b);
}
else {
return myString.substring(a + name.length());
}
}
}
}
答案 1 :(得分:0)
根据我的理解,你试图在括号内提取单词。 您可以使用正则表达式来匹配您需要的内容。
例如:
String regex = “\\(.+\\)(\\[.+\\]){0,1}” // this match everything inside the brackets and match what’s inside [] when present
答案 2 :(得分:0)
尝试以下代码:
String myString = "MYVAR1(some data[some text]) SOMEVAR(table spoon fork(chairs cloths)[cups] ANOTHERVAR(balloons{clowns} bubbles)";
String myVar1 = myString.split("MYVAR1")[1].split("SOMEVAR")[0];
String tmpSomeVAR = myString.split("SOMEVAR")[1];
String someVar = "";
String ANOTHERVAR = "";
String[] tmp = tmpSomeVAR.split("ANOTHERVAR");
if (tmpSomeVAR.split("ANOTHERVAR").length == 1) {
someVar = tmpSomeVAR;
} else {
String[] parts = tmpSomeVAR.split("ANOTHERVAR");
someVar = parts[0];
ANOTHERVAR = parts[1];
}
System.out.println(myVar1);
System.out.println(someVar);
System.out.println(ANOTHERVAR);