如何拆分字符串包含相同的模式

时间:2014-05-22 05:12:24

标签: java android regex string

在java中拆分字符串时遇到问题。我有

String test="if x=7 else if x=6 else if x>5 else"
String leftPart ="if"
String rightPart="else"

有些人知道如何从 if to else 拆分并添加数组列表或字符串数​​组x = 7,x = 6和x> 5.

实际上,我想这样做

ArrayList<String>ValueArray = new ArrayList<String>();

    ValueArray =[x=7,x=6,x>5];

4 个答案:

答案 0 :(得分:3)

试试这个..

ArrayList<String> list_array = new ArrayList<String>();
String[] string_array = test.split("else");

for(int i = 0; i < string_array.length; i++){
     list_array.add((string_array[i].replace("if ","")).trim());
}

答案 1 :(得分:1)

您可以使用此String#split

String[] tokens = test.split( "\\s*(?:if|else)\\s*" );

PS:您将在输出数组中获得空字符串,您必须将其丢弃。

答案 2 :(得分:1)

以下是使用String#replaceAllString#split

的其他选项
String s  = "if x=7 else if x=6 else if x>5 else";
String[] parts = s.replaceAll("\\s*(?:if|else)\\s*", "").split("(?<=\\d)");
System.out.println(Arrays.toString(parts));

输出

[x=7, x=6, x>5]

答案 3 :(得分:0)

不确定我理解你的问题。但无论你想做什么,都可以通过使用具有常规表达式和零宽度正向前瞻的分割来实现。例如:

String test="if x=7 else if x=6 else if x>5 else";

String[] pieces = test.split("(?=else)");

for(int i =0; i< pieces.length; i++){
    System.out.println(pieces[i]);
}

输出:

if x=7 
else if x=6 
else if x>5 
else

语法:split(“(?= what_you_want_to_split_using)”);