2017-02-19 21 views
2

文字列を分割してUnicodeと通常のエスケープの両方を抽出する正規表現を行っています(基本的にJavaで受け入れられたエスケープ)、メソッドを介して。StringEscapeUtilsを使用せずに文字列を文字エスケープとUnicodeに変換する

これはすべて正常に動作しますが、今ではこれらのエスケープが受信された時点で、実際のエスケープに変換します。たとえば、\nは、文字通り改行に変換されます。

私はApacheのStringEscapeUtilsを使用することができますが、私は複数の理由から彼らのライセンスに同意せず、とにかくそれを自分で行うことができます。

私の理解から、私は単にこのような何か行うことができます。

switch (character) { 
case 'n': return '\n'; 
case 't': return '\t'; 
default: return '\0'; 
} 

をしかし、私は、Javaがごとに記述することなく、有効なエントリを受け入れます\0345346\u3456のようなものを、解析することができるようにしたいです、単一の可能な組み合わせ。私はこれらのことをうまく再現することができますが、をリテラル値に解析できるようにしたいと考えています。

これを達成できる方法はありますか?

答えて

0

これは、Propertiesクラスを悪用することで簡単に行うことができます。これは実際にStringデータを解析し、正しくフォーマットします。

private char escapeCharacter(String data) { 
    Properties p = new Properties(); 
    try { 
     p.load(new StringReader("key=" + data)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return '\0'; 
    } 
    return p.getProperty("key").charAt(0); 
} 

これは、エスケープコードを文字列として取り込み、プロパティに読み込んで解析し、修正された文字を戻します。

この関数は、質問要求として、Unicodeエスケープと従来のエスケープをサポートしています。

関連する問題