忽略转义-Java

忽略转义-Java,java,escapestring,Java,Escapestring,我一直在尝试创建一种用Java编码字符串的方法,但我遇到了一个大障碍 我的问题是我不能忽略诸如\n\u\之类的转义。(它们也被编码了。) 我在这个问题上花了3个小时,这是我的代码 public Object encode() throws EncodingException { String encoded = ""; if (!isEncoded) { int i = 0; char[] alpha = (this.value.toString(

我一直在尝试创建一种用Java编码字符串的方法,但我遇到了一个大障碍

我的问题是我不能忽略诸如\n\u\之类的转义。(它们也被编码了。)

我在这个问题上花了3个小时,这是我的代码

public Object encode() throws EncodingException {
    String encoded = "";
    if (!isEncoded) {
        int i = 0;
        char[] alpha = (this.value.toString().toCharArray());

        while (!(i >= alpha.length)) {
            i++;
            try {
                if(!(alpha[i - 1] == '\\')){
                    encoded = encoded
                            + SerializeEncoding.encoding.encodings.get(
                                    new String(new char[] { alpha[i - 1] }))
                                    .toString();
                }else{
                    encoded = encoded
                    + alpha[i - 1] + alpha[i];
                    i++;
                }

            } catch (NullPointerException e) {
                encoded = encoded
                        + new String(new char[] { alpha[i - 1] })
                                .toString();
            }

        }
        encodedValue = (Object) encoded;
        isEncoded = true;
        log = encodedValue;
        return (Object) encodedValue;
    } else {
        throw new EncodingException("Already encoded");
    }
}
多谢各位 卷发


注:如果我遗漏了什么,请告诉我。

一个选项如下。请优化代码

String before = "test\ntest1\n";
         String after = "";
            String [] str = before.split("\n");
            for (String string : str) {
                after = after+encode(string)+"\n";
            }

我不太清楚您的需求,您可以通过迭代字符串来处理java中的所有特殊字符

public static void main(String[] args) {
    String before = "test\ntest1\n";
    final StringBuilder result = new StringBuilder();
    final StringCharacterIterator iterator = new StringCharacterIterator(before);
    char character =  iterator.current();
     while (character != CharacterIterator.DONE ){
             // do whatever you want to do with the char... I am just removing the \n
         if (character == '\n') {   
             character = iterator.next(); 
         } else {
             result.append(character);               
         }
         character = iterator.next();
     }

    System.out.println(result.toString());
}

使用可用的编码库是否有限制?e、 g Base64编码?不,我目前无法在互联网上下载。我只剩下很少的数据了。顺便说一句,我很无聊,所以我试着做我自己的。不清楚你在问什么。您的意思是
alpha
数组实际上包含字符“\”和“n”还是包含单个字符LF(\u000a)?您希望发生什么,以及会发生什么?是
alpha
包含“\”和“n”作为input@curlip好的,但我还是不明白问题出在哪里。你能举一个输入、预期输出和实际输出的例子吗?