How can I add escape characters to a Java String?

后端 未结 3 719
梦谈多话
梦谈多话 2020-12-11 01:19

If I had a string variable:

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

and I wanted to add an escape character in front of every \'

相关标签:
3条回答
  • 2020-12-11 01:54

    I'm not claiming elegance here, but i think it does what you want it to do (please correct me if I'm mistaken):

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

    outputs

    Hello, I\'m\" here
    
    0 讨论(0)
  • 2020-12-11 01:59

    For others who get here for a more general escaping solution, building on Apache Commons Text library you can build your own escaper. Have a look at StringEscapeUtils for examples:

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-11 02:01

    Try Apache Commons Text library-

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

    Result:

    "a"","
    a\",
    Hello, I\'m \"here
    
    0 讨论(0)
提交回复
热议问题