多次拆分和提取java字符串

多次拆分和提取java字符串,java,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 spoo

我有一个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的内容。

根据我的理解,你试图提取括号内的单词。 您可以使用正则表达式来匹配所需的内容

例如:

String regex = “\\(.+\\)(\\[.+\\]){0,1}” // this match everything inside the brackets and match what’s inside [] when present 
请尝试以下代码:

    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);
试试这个

  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());
        }
      }
    }
  }

不总是括号。这是在搜索的条之后和下一个varUse\(.+\)(\[.+\])*之前的内容。在您的示例中,[cups]之后是否应该有一个右括号?为什么输入在
[cups]
之后没有右括号?它打破了平衡括号模式。虽然这很有效,但它假设变量是有序的。也就是说,MYVAR1在SOMEVAR之前。。酒吧可以是任何顺序的字符串。还假设另一个Var是最后一个,情况可能并非如此。另一个变量可能在字符串的前面…虽然这很有效,但它假设变量是有序的。也就是说,MYVAR1在SOMEVAR之前。。酒吧可以是任何顺序的字符串。还假设另一个Var是最后一个,情况可能并非如此。另一个变量可能位于字符串的前面…您可以通过更改参数“name”和“nextName”值来处理它