由于某些原因,在某些情况下使用string.split会出现问题。它必须与文件的编码有关。但是,我确保在Eclipse下的Encoding中,它在所有情况下都会显示“Default MacRoman” - 这是所有代码文件中使用的默认值。
然而,当我将一个字符串从我的一个java文件复制到另一个包含该字符串的文件时:
"Test String" - while typing this string again "Test String"
有区别。在第一个中,“”空间编码为160,而在第二个空间中编码为32。
因此,当使用分割时,我必须确保使用正确编码的“”。
这就是我现在的做法 - 我认为不是很优雅。
longText
包含要拆分的文字
char splitChar;
if (longText.indexOf((char) 32) > 0) {
splitChar = (char) 32;
} else
splitChar = (char) 160;
String splitCharString = String.format("%c", splitChar);
String[] tokens = longText.split(splitCharString);
有更好的方法吗?
ps只是将Eclipse中的文件编码显式更改为MacRoman不起作用
答案 0 :(得分:0)
160是non-breaking space字符的Latin1(以及Unicode)代码点。它与普通空间不同。
MacRoman字符集在不同的代码点处具有此功能(202)。通常,要编辑Java源代码,您应该使用Unicode编码,例如UTF-8。