通过Java正则表达式去掉SQL代码中回车换行和多余空格


你可以使用Java中的`String.replaceAll()`方法来去除SQL代码中的回车换行和多余空格。以下是一个示例代码,展示了如何使用正则表达式来实现这一点:


public class SqlCleaner {
    public static String cleanSql(String sql) {
        // 去除多余的空格,将多个空格替换为一个空格
        // 去除回车符(\r)和换行符(\n)
        // 注意:这里假设我们不想完全去除所有空格,而是将连续的空格压缩为一个空格
        String cleanedSql = sql.replaceAll("\\s+", " ").trim();
        
        // 如果需要彻底去除所有空格(包括单个空格),可以使用以下正则表达式
        // String cleanedSql = sql.replaceAll("\\s+", "").trim();
        
        return cleanedSql;
    }

    public static void main(String[] args) {
        String originalSql = "SELECT * FROM \n users \r\n WHERE name = 'John Doe'  AND age > 30;";
        String cleanedSql = cleanSql(originalSql);
        System.out.println(cleanedSql);
    }
}

这段代码中的`replaceAll("\\s+", " ")`部分使用了正则表达式`\\s+`来匹配一个或多个空白字符(包括空格、制表符、换行符等),并将它们替换为一个空格。然后,使用`trim()`方法去除字符串开头和结尾的空格(如果有的话)。

如果你需要彻底去除所有空格(包括单个空格),可以使用`replaceAll("\\s+", "")`来替换掉所有的空白字符。但是,请注意这样做可能会改变SQL语句的原始意义,特别是当空格用于分隔关键字或标识符时。因此,在大多数情况下,保留至少一个空格是更安全的做法。