2016-09-21 125 views
0

在我的其中一个项目中,字符串被发送到不能显示任何现代字符的旧图文电视系统。 (Teletext创建于20世纪70年代)。由于发送到该系统的内容来自外部来源(网络解析,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,你不应该编写自己的代码,而应该使用一些现有的库。他们不会执行代码中的许多错误。

更换某些字符的方法很好。但最后,您必须删除字符串中不会被终端处理的所有字符。也就是说,不是定义禁止的字符,而是定义允许的字符。

相关问题