我有字符串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(")");
我有字符串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(")");
以下:
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>)
展望某些模式,但不「消耗」它;這裏的模式是\\(
這意味着一個單獨的(
字符,但它需要在反斜槓前面,因爲(
通常在正則表達式中具有特殊含義。
當我打印出結果時,它打印出[Ljava.lang.String; @ 15db9742 有什麼想法? – 2015-02-08 02:45:56
http://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-an-array – ajb 2015-02-08 04:19:27
q = q.replaceAll(")","");
String[] splittedString = q.split("(");
現在你有像下面這樣的元素的字符串數組。
ADD
EXP 1 4
SQR 1
希望這是你所期望的。
更正。謝謝,併爲錯誤感到抱歉。 – 2015-02-08 02:46:02
如果你想在括號中的所有元素分開,你可以用一個非常簡單的(而且容易閱讀的)正則表達式與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。
'indexOf'返回一個整數,所以你到目前爲止的代碼創建了一個整數數組。 – ajb 2015-02-08 02:28:24
對不起,只是Java,我希望它們是一組可能在數組中的較小的字符串? – 2015-02-08 02:29:30
http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-。其實,這可能會有所幫助,但這並不是很清楚你需要什麼。你想讓每個結果字符串以'('開始?或者你想要更復雜的東西? – ajb 2015-02-08 02:29:53