java - 将表达式 String 拆分为 ArrayList

标签 java string split

我有一个表达式字符串为

"((firstname = john AND Lastname = Eleven) OR (salary = 15000 AND location = Mexico OR (firstname = mathew AND lastname = Thirteen)))";

是否有任何内置函数我可以将它们拆分为 List<String>具有以下格式:

list[0] = "(";
list[1] = "(";
list[2] = "firstname";
list[3] = "=";
list[4] = "john"
list[5] = "AND";
list[6] = "Lastname"
list[7] = "=";
list[8] = "Eleven";
list[9] = ")"
list[10] = "OR"
list[11] = "(";
list[12] = "salary";
list[13] = "15000"
list[14] = "AND"
etc...

最佳答案

您可以将所有 () 替换为 space $1 space 然后用空格拆分:

String spl[] = 
       str.replaceAll("([\\(\\)=])", " $1 ").replaceAll(" +", " ").trim().split("\\s");

输出

(, (, firstname, =, john, AND, Lastname, =, Eleven, ), OR, (, salary, =, 15000, AND, 
location, =, Mexico, OR, (, firstname, =, mathew, AND, lastname, =, Thirteen, ), ), )

关于java - 将表达式 String 拆分为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43802262/

相关文章:

c - 字交换期间无输出

string - 如何在 awk 表达式中使用变量

r - 在多行上按 '/' 一次拆分数千列,对新行中的值进行排序并添加 'NA' 值

java - 为什么在 Java 8 split 中有时会删除结果数组开头的空字符串?

python - 如何将一串句子重新格式化为每行 Python 一个句子

java - Socket Exception - 如何从 Socket Exception 对象获取原始套接字

java - Jackson MixIn 将泛型类 JAXBElement<T> 替换为 getValue() 后面的 T

java - 有没有办法忽略java中的退格键?

java - 使用 SelectionMode.MULTI 将行添加/创建点击事件到 Vaadin 网格?

c# - 如何获取在资源 Xamarin.android 中创建的字符串的值