我有一个String行,可以是
AND A B C -> D
OR A B -> D
NAND A B C D E -> F
............
如何在没有第一个String令牌(AND,OR,NAND)且没有A B C D
的情况下将String行拆分为->
并且应该修剪空格?我在这里做过,但它给了我一个输出
or A B C
D
public static void main(String [] args)throws IOException
{
String str = "or A B C -> D";
String[] array = str.split("->");
String[] leftSide = array[0].trim().split(array[0]);
String[] rightSide = array[1].trim().split(" ");
for(int i = 0; i < leftSide.length; i++)
{
System.out.println(leftSide[i]);
}
for(int i = 0; i < rightSide.length; i++)
{
System.out.println(rightSide[i]);
}
}
答案 0 :(得分:2)
String str = "AND A B C -> D";
// \\s+ for multiple white spaces -> is for your request
StringTokenizer st = new StringTokenizer(str, "\\s+ ->");
boolean isFirstToken = true;
while (st.hasMoreTokens()) {
if (isFirstToken) {
isFirstToken = false;
st.nextToken();//For first iteration
continue;
}
System.out.print(st.nextToken() + " ");
}
答案 1 :(得分:1)
用空格“”拆分字符串,然后遍历生成的数组,删除任何超过1个符号的序列。
String str = "or A B C -> D";
String[] array = str.split(" ");
List<String> list = Arrays.asList(array);
String currentString;
for(int i = 0; i < list.size(); i++)
{
currentString = list.get(i);
if(currentString.length() >1) {
list.remove(currentString);
}
}
System.out.println(list);
答案 2 :(得分:0)
发生了什么事情,你正在分裂“ - &gt;”,给予 “或A B C”和“D”。然后你正在修剪它们,然后特别将它们分开(你自己将左侧分开,右侧分开“”但“D”没有空格可以分开。这样就可以得到你看到的结果。 / p>
你可以定义所有在某个数组中有效的东西然后拆分所有东西,然后只保留有效的东西。
public static final String[] VALUES = new String[] {"A","B","C","D"};
public static void main(String [] args)
{
String str = "or A B C -> D";
String[] array = str.split(" ");
for (int i = 0; i < array.length; i++) {
if (Arrays.asList(VALUES).contains(array[i])) {
System.out.print(array[i] + " ");
}
}
}
或者,如果对您的应用程序更有意义,您可以反过来这样做 - 定义一个不应包含的术语列表。
public static final String[] EXCLUDE = new String[] {"AND", "OR", "->"};
public static void main(String [] args)
{
String str = "or A B C -> D";
String[] array = str.split(" ");
for (int i = 0; i < array.length; i++) {
if (!(Arrays.asList(EXCLUDE).contains(array[i]))) {
System.out.print(array[i] + " ");
}
}
}