多次拆分和提取java字符串

时间:2017-11-30 07:55:16

标签: java

我在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的内容。

3 个答案:

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