我有字符串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(")");
答案 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等正则表达式教程。