[英]Remove excess comma in a string in Java
我有一个定义如下的 SQL 字符串:
String query = "SELECT NAME,, AGE,, Dep, as, Department, FROM, Employee, WHERE =, :param1";
我想查询为: SELECT NAME, AGE, Dep as Department FROM Employee WHERE = :param1
有人可以用Java帮助解决这个问题吗?
我试过query.repaceAll(",,", "");
但它似乎不能正常工作。
修复添加这些额外逗号的代码可能会更好。
无论如何, query.replaceAll(",+", ",")
会将任何逗号序列query.replaceAll(",+", ",")
为一个。 然后你会被as
关键字周围的逗号困住。 你可以用.replaceAll(",\\\\s*[Aa][Ss]\\\\s*,", " as ")
替换的那些。 类似的其他关键字,如WHERE
, FROM
, ...
首先,您应该尝试修复该查询的来源。
这是避免使用正则表达式的简单技巧:
String query = "SELECT NAME,, AGE,, Dep, as, Department, FROM, Employee, WHERE =, :param1";
query = query.replace(",,", "#").replace(",", "").replace("#", ",");
System.out.println(query);
SELECT NAME, AGE, Dep as Department FROM Employee WHERE = :param1
看起来查询是从一个列表生成的,然后由“,”连接。 因此,您需要做的就是
query = query.replaceAll(", ", "");
我将再次提及,因为其他人已经这样做了,这是一个涉及各种安全问题的可怕想法。
尝试这个:
String newQuery = Stream.of(query.split(",,"))
.map(s -> s.replace(",", ""))
.collect(Collectors.joining(","));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.