【问题标题】:How can I add escape characters to a Java String?如何将转义字符添加到 Java 字符串?
【发布时间】:2013-08-27 17:03:17
【问题描述】:

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

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

我想在每个'" 变量内前面添加一个转义字符(即不是实际上转义字符),如何我这样做?

【问题讨论】:

  • 你的意思是在编辑器中?
  • 只需输入 \ 字符?
  • 使用来自 apache commons 的 StringEscapeUtils.html#escapeJava
  • 我的意思是使用example 变量。
  • example.replace("'", "\\'");

标签: java string escaping


【解决方案1】:

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

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

【讨论】:

  • 谢谢!有用。抱歉,我没有清楚地解释问题。
  • 很高兴能帮助...在未来,请意识到在谈论转义字符时,大多数人不希望在他们的代码中看到反斜杠。你要求的很不寻常。如果偏离给定编程主题的通常做法(例如转义字符),请确保非常精确。
【解决方案2】:

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

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

public class CustomEscaper {
    
    private static final CharSequenceTranslator ESCAPE_CUSTOM;
    
    static {
        final Map<CharSequence, CharSequence> escapeCustomMap = new HashMap<>();
                    
        escapeCustomMap.put("+" ,"\\+" ); 
        escapeCustomMap.put("-" ,"\\-" ); 
        ...
        escapeCustomMap.put("\\", "\\\\");
        ESCAPE_CUSTOM = new AggregateTranslator(new LookupTranslator(escapeCustomMap));
    }

    public static final String customEscape(final String input) {
        return ESCAPE_CUSTOM.translate(input);
    }
}

【讨论】:

    【解决方案3】:

    试试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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-11
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2017-03-09
      • 2023-04-03
      相关资源
      最近更新 更多