拆分字符串并在阵列上制作零件

时间:2015-02-08 02:24:56

标签: java arrays string indexof

我有字符串Q,我想把它分成多个部分。例如,我希望(ADD等于1和(EXP 1 4)等于2,依此类推,在每个括号后分割,但仍然保持字符串的形式。

String q =(("(ADD(EXP 1 4)(SQR 1)(DIV 34 77)(MULT 12 5 3 7)(Sub 1 2"));

我试过这样做,但没有取得任何成功。

        s[0]=q.indexOf("(");
        s[1]=q.indexOf(")");

3 个答案:

答案 0 :(得分:0)

以下内容:

String q ="(ADD(EXP 1 4)(SQR 1)(DIV 34 77)(MULT 12 5 3 7)(Sub 1 2";
String[] result = q.split("(?=\\()");

在结果数组中生成以下字符串:

"(ADD"
"(EXP 1 4)"
"(SQR 1)"
"(DIV 34 77)"
"(MULT 12 5 3 7)"
"(Sub 1 2"

但我并不完全确定你想要的是什么(如果不是,你需要为我们澄清)。

split的参数是正则表达式。将它与"/"之类的东西一起使用是很常见的,它会用斜杠字符分割输入字符串。但这样做并不会在结果中留下斜线字符。对于字符串split但是在结果中留下分隔符,您需要前瞻。上面的正则表达式就是这样。 (?=<something>)展望某种模式,但不会消费&#34;它;这里的模式是\\(,这意味着单个(字符,但它需要以反斜杠开头,因为(通常在正则表达式中具有特殊含义。

答案 1 :(得分:0)

q = q.replaceAll(")","");

String[] splittedString = q.split("(");

现在你有一系列字符串,其元素如下所示。

ADD

EXP 1 4

SQR 1

希望这是你的期望。

答案 2 :(得分:0)

如果您希望单独使用括号中的所有元素,则可以使用split方法使用非常简单(且易于阅读)的正则表达式:

String[] array = s.split("[(*|)*|(*)*|)*(*]");

这将为您提供{ADD, EXP 1 4, SQR 1, DIV 34 77, MULT 12 5 3 7, Sub 1 2}

如果你想继续嵌套,那就更复杂了,我强烈建议你看看http://www.regular-expressions.info/tutorial.html等正则表达式教程。