如何向 Java 字符串添加转义字符?

问题描述 投票:0回答:4

如果我有一个字符串变量:

String example = "Hello, I'm here";

我想在变量

内的每个
'
"前面添加一个转义字符(即not实际上转义字符),我该怎么做?

java string escaping
4个回答
21
投票

我并不是在这里声称优雅,但我认为它做了你想要它做的事情(如果我错了,请纠正我):

public static void main(String[] args)
{
    String example = "Hello, I'm\" here";
    example = example.replaceAll("'", "\\\\'");
    example = example.replaceAll("\"", "\\\\\"");
    System.out.println(example);
}

输出

Hello, I\'m\" here

3
投票

对于其他想要更通用的转义解决方案的人来说,您可以在 Apache Commons Text 库上构建自己的转义器。看一下 StringEscapeUtils 的例子:

import java.util.Map;

import org.apache.commons.text.translate.CharSequenceTranslator;
import org.apache.commons.text.translate.LookupTranslator;

public final class CustomEscaper {  

    private static final CharSequenceTranslator CUSTOM_ESCAPER = 
        new LookupTranslator(
            Map.of(
                "+" , "\\+",
                "-" , "\\-",
                // ...
                "\\", "\\\\"
            )
    );
    
    private CustomEscaper() {
        // hide
    }

    public static final String escape(String input) {
        return CUSTOM_ESCAPER.translate(input);
    }
}

2
投票

尝试Apache Commons Text库-

    System.out.println(StringEscapeUtils.escapeCsv("a\","));
    System.out.println(StringEscapeUtils.escapeJson("a\","));
    System.out.println(StringEscapeUtils.escapeEcmaScript("Hello, I'm \"here"));

结果:

"a"","
a\",
Hello, I\'m \"here

0
投票

如果只有一个引号那么简单,但如果是双引号则像这样使用

eachClientName = eachClientName.replaceAll("'","\\\'");

eachClientName =eachClientName.replaceAll("\"","\\\\\"");

© www.soinside.com 2019 - 2024. All rights reserved.