1
我遇到的最大問題是用戶直接將字從WORD複製到字段中,導致我生成的xml無效。我發現了很多不同的方法來解決這個問題,但是從我的xml中刪除這些無效字符的最常見的方式是否來自WORD或不是來自?Groovy - 刪除無效的xml字符
我遇到的最大問題是用戶直接將字從WORD複製到字段中,導致我生成的xml無效。我發現了很多不同的方法來解決這個問題,但是從我的xml中刪除這些無效字符的最常見的方式是否來自WORD或不是來自?Groovy - 刪除無效的xml字符
我用一個靜態方法編寫了一個Java類(7年前,查看時間戳),試圖清理從Word發佈的文本。
它在這裏如果你有興趣:
/**
* <p>Title: Word Cleaner</p>
* <p>Description: Strips out all of the rubbish that Word tends to generate (open, close quotes, etc)</p>
*
* Based on John Walker's "Demoroniser" Perl script : http://www.fourmilab.ch/webtools/demoroniser/
*/
public class WordCleaner
{
private WordCleaner() {}
public static String runWordCleaner(String input)
{
StringBuffer sb = new StringBuffer() ;
int len = input == null ? 0 : input.length() ;
for(int i = 0 ; i < len ; i++)
{
int c ;
switch(c = (int)input.charAt(i))
{
case 0x82 : sb.append(",") ; break ;
case 0x83 : sb.append("f") ; break ;
case 0x84 : sb.append(",,") ; break ;
case 0x85 : sb.append("...") ; break ;
case 0x88 : sb.append("^") ; break ;
case 0x89 : sb.append("ppt") ; break ;
case 0x8B : sb.append("<") ; break ;
case 0x8C : sb.append("Oe") ; break ;
case 0x91 : sb.append("'") ; break ;
case 0x92 : sb.append("'") ; break ;
case 0x93 : sb.append("\"") ; break ;
case 0x94 : sb.append("\"") ; break ;
case 0x95 : sb.append("*") ; break ;
case 0x96 : sb.append("-") ; break ;
case 0x97 : sb.append("--") ; break ;
case 0x98 : sb.append("~") ; break ;
case 0x99 : sb.append("TM") ; break ;
case 0x9B : sb.append(">") ; break ;
case 0x9C : sb.append("oe") ; break ;
case 0xA9 : sb.append("(c)") ; break ;
case 0xAE : sb.append("(r)") ; break ;
case 0xBC : sb.append("1/4") ; break ;
case 0xBD : sb.append("1/2") ; break ;
case 0xBE : sb.append("3/4") ; break ;
case 8208 : sb.append("-") ; break ;
case 8209 : sb.append("-") ; break ;
case 8211 : sb.append("--") ; break ;
case 8212 : sb.append("--") ; break ;
case 8213 : sb.append("--") ; break ;
case 8214 : sb.append("||") ; break ;
case 8215 : sb.append("_") ; break ;
case 8216 : sb.append("'") ; break ;
case 8217 : sb.append("'") ; break ;
case 8218 : sb.append(",") ; break ;
case 8219 : sb.append("'") ; break ;
case 8220 : sb.append("\"") ; break ;
case 8221 : sb.append("\"") ; break ;
case 8222 : sb.append(",,") ; break ;
case 8223 : sb.append("\"") ; break ;
case 8226 : sb.append("*") ; break ;
case 8227 : sb.append(">") ; break ;
case 8228 : sb.append("*") ; break ;
case 8229 : sb.append("..") ; break ;
case 8230 : sb.append("...") ; break ;
case 8231 : sb.append("-") ; break ;
case 61514 : sb.append(":-)") ; break ;
case 61515 : sb.append(":-|") ; break ;
case 61516 : sb.append(":-(") ; break ;
default : sb.append((char)c) ;
}
}
return sb.toString() ;
}
}
我爲這幾個變化,使其多了幾分時髦,但所有這一切是完美的。謝謝! – Howes
你的啓發讓我[groovify我的版本](https://gist.github.com/3873209);-) –