2016-09-21 5 views
0

私のプロジェクトの一つでは、文字列は現代の文字を表示することができない古いテレテキストシステムに送信されます。 (Teletextは1970年代に作られた)。そのシステムに送信されるコンテンツは外部ソース(ウェブ解析、RSSフィードなど)から来ているため、受信データを制御することはできません。 何年も私は今まで遭遇したすべての文字の長いリストを使用していますが、これは許されません。それはうまくいっていますが、私の解決策は醜く効率的ではないと思います。文字列に許可されていない文字を置き換える最も良い方法は何ですか?

私のソリューションを改善してより効率的にする方法はありますか?

public static String removeSpecialCharactersAndHTML(String text) { 
    String result = text; 

    result = result.replace(">", ">"); 
    result = result.replace("&lt;", "<"); 
    result = result.replace("&#38;", "&"); 
    result = result.replace("&quot;", "\""); 
    result = result.replace("&nbsp;", " "); 
    result = result.replace("&amp;", "&"); 

    result = result.replace("]]>", ""); 
    result = result.replace("‘", "'"); 
    result = result.replace("’", "'"); 
    result = result.replace("`", "'"); 
    result = result.replace("´", "'"); 
    result = result.replace("“", "\""); 

    // ..... 

    result = result.replace("”", "\""); 
    result = result.replace("³", "3"); 
    result = result.replace("²", "2"); 

    return result 
} 
+0

特殊でない文字以外の特殊文字があります。それはどんな文字で処理できますか? – Bohemian

+1

あなたのコードをテキスト形式の質問に適切な書式で貼り付けます。 githubなどの外部ソースへのリンクを提供しないでください。 – progyammer

+0

私は[that](http://stackoverflow.com/a/10574318/1402861)あなたの質問に答えるかもしれないと思います。 ) – WrRaThY

答えて

1

文字列からHTMLを削除するには、独自のコードを書き込むのではなく、既存のライブラリを使用する必要があります。彼らはあなたのコードにある多くのバグをしません。

特定の文字を置き換える方法は問題ありません。しかし最後に、ターミナルで扱われない文字列からすべての文字を削除する必要があります。つまり、禁止文字を定義するのではなく、許可文字を定義します。

関連する問題