繁体   English   中英

在 Java 中删除字符串中多余的逗号

[英]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 ")替换的那些。 类似的其他关键字,如WHEREFROM , ...

首先,您应该尝试修复该查询的来源。

这是避免使用正则表达式的简单技巧:

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM