我有一个Map类型的变量。
if (sourceMap.containsKey(currentRow)) {
//Remove the row from Map
} else {
//Mismatch
}
其中sourceMap
是一个包含许多字符串的Hashmap变量,例如
Period Name
Person Last Name
Person First Name
Order Code
Ship_to_Customer_Name
Sub_Profit_Center
Commission Amount
Credit Amount
Rate Amount
Apr-09
Morgan
Martin
1022334852
Carl Zeiss de M&# 195;&# 189;xico, S.A. de C.V.(no space after the # in the string)
和currentRow
包含以下字符串:
Carl Zeiss de Mýxico, S.A. de C.V.
与最后一行相同。我的要求是它应该匹配。现在它不匹配。我必须做什么转换来匹配那些
这些字符串来自不同的文件 第一个下载为CSV,因此没有unicode字符......第二个(currentRow)以unicoded txt格式下载,并使用dos2unix转换为CSV ..
答案 0 :(得分:1)
Carl Zeiss de Mýxico, S.A. de C.V.
这是一个包含HTML编码字符的字符串。您可以使用unescapeHtml4
等实用程序函数执行HTML-unescape。
通常,您希望将字符串保留为原始格式,而不是使用HTML-escape。看看你得到sourceMap
的地方 - 如果你控制了它并且可以修复它,避免无偿逃脱那么这就行了。另请注意,Mýxico
,无论是否为HTML编码,都看起来像是堆栈中其他位置错误处理Unicode字符的证据。
答案 1 :(得分:0)
首先,我们必须从以下网址http://www.java2s.com/Code/Jar/c/Downloadcommonlang3jar.htm
下载jar文件现在添加import语句如下
import static org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4;
现在我们需要使用我们想要转义html编码字符串的方法。 例如:
String s=Carl Zeiss de Mýxico, S.A. de C.V.
System.out.println("Before: "+s);
s=unescapeHtml4(s);
System.out.println("After: "+s);
现在输出如下
Before: Carl Zeiss de Mýxico, S.A. de C.V.
After: Carl Zeiss de Mýxico, S.A. de C.V.