2012-01-05 25 views
7

私は、文字エスケープシーケンスを含む文字列を表現された文字に変換する方法を探しています。文字エスケープシーケンスを含む文字列をcharに変換するにはどうすればよいですか?

たとえば、文字\"(バックスラッシュと二重引用符が2文字あります)を文字"に解析したいとします。したがって、1つのcharにcharの配列があります。

したがって、このような何かをし、その逆かもしれない何か:

package test; 
public class Test { 
    private static char parseChar(String string) { 
     char c = 0; 
     if ("\\n".equals(string)) { 
      c = '\n'; 
     }else if ("\\t".equals(string)) { 
      c = '\t'; 
     }else if ("\\r".equals(string)) { 
      c = '\r'; 
     }else if ("\\f".equals(string)) { 
      c = '\f'; 
     }else if ("\\b".equals(string)) { 
      c = '\b'; 
     }else if ("\\\'".equals(string)) { 
      c = '\''; 
     }else if ("\\\"".equals(string)) { 
      c = '\"'; 
     }else if ("\\\\".equals(string)) { 
      c = '\\'; 
     } 
     return c; 
    } 
    public static void main(String[] args) { 
     for (String arg : args) { 
      System.out.println(arg + " : " + (int)parseChar(arg) + " : " + parseChar(arg) + ";"); 
     } 
    } 
} 

私はこの理由のために良い(多分ネイティブ)コードを私に提供することができjava.langの何か他はありません信じられませんでした私は上記のコードが不完全で、すべての問題のある(エスケープ可能な)文字を解析しないと感じます。 私はStringコンストラクタと同じことを行うことができるツールが欲しい:

String st = "\""; 
char ch = st.charAt(0); 

CH出力:「;

は明らかではない私がする場合、私は申し訳ありませんが、これを読んでいただきありがとうございます。要求された場合、定期的に、正しいチェック

PS

私は上記のコードを実行します:

java -classpath〜/ workspace/MacroRecorder/bin/test.Test \\ n \\ t \\ f \\ r \\ b \\\ '\\\ "\\\\;

...それは

\n : 10 : 
; 
\t : 9 : ; 
\f : 12 : 
      ; 
;r : 13 : 
\b : 8 :; 
\' : 39 : '; 
\" : 34 : "; 
\\ : 92 : \; 

を出力しかし、Eclipseで、出力は特に「非常に厄介で同じパラメータと完全に異なっている。

+0

[どのように変換する/文字列からJavaのcharに解析するか?](http://stackoverflow.com/questions/7853502/how-to-convert-parse- from-string -to-char-in-java) –

+0

その質問にどのように質問を追加できますか?すべての答えは同じで、質問に答えることはできません...私はこれがより具体的だと感じますが、彼は私と同じものが欲しいと真実です。彼の質問も試してみます。 – sinekonata

+0

できません。そこの答えがあなたを助けないとどう思いますか?確かにそうだ。 –

答えて

13

のApache CommonsのStringEscapeUtilsと救助に、あなたは私が思うunescapeJavaメソッドが欲しい:http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.lang.String)

+0

だと思いますこれは私の望むものとまったく逆のことですが、2ウェイのutilを使いたいときには良いスタートです。 – sinekonata

+0

同じクラスでescapeJavaメソッドを試してみてください!それは両方の方法で行います.JavaScript、 HTMLなど)あなたがエスケープの種類が異なる場合に備えて –

+0

ああ申し訳ありませんが、エスケープとエスケープの両方があったのを見ていませんでした。 ありがとうございました。そのようなクラスで何時間も見ました。 – sinekonata

関連する問題