奇怪的字符转换,需要帮助澄清
Weird character conversion, need help clarifying
所以我正在编写一个程序,将数据从网页提取到 excel sheet,然后将其打印到文本注释中。但是,我遇到的一个奇怪的问题是,从excel sheet 到文本注释,一个字符发生了变化。 - 变成了? .我的解决方案是遍历这个词,当它到达?并将其更改为 - 。我试过使用我在网上找到的 unicode 并完成了
.replace("(question mark unicode) ", " - ")
无济于事。有谁知道为什么要这样做?你能确认一下的 unicodes 吗?和 - 。所以如果这个词是 "Leo‑III 1.3" 现在是 "Leo?III 1.3" 谢谢你的帮助
replace in java 将字符作为第一个参数,并用第二个参数替换所有出现的地方。
你可以使用这个:
String newStr = str.replaceAll("\?", "-");
replaceAll 将第一个参数作为正则表达式,并用第二个参数替换所有匹配项。
注:\帮助转义?
此外,请务必将结果存储在新的字符串变量中,因为字符串是不可变的。
根据 Java 文档,String class 的 replace
方法采用原语 char
或实现 CharSequence
的对象(如 String ) 作为其参数。
如果要将 Leo?III 1.3 转换为 Leo-III 1.3,请使用:
.replace("?", "-")
?
是字符集编码问题的结果,可能出现在数据管道的许多地方。
实际上可能在字符串的打印中,字符串本身是有效的。
要找出实际的字符值是多少,请尝试 运行 此代码为字符串中找到的所有非 ASCII 字符打印 Unicode 转义码:
public static void printNonAscii(String s) {
TreeSet<Character> nonAscii = new TreeSet<>();
for (char ch : s.replaceAll("[\r\n\x20-\x7E]", "").toCharArray())
nonAscii.add(ch);
for (char ch : nonAscii)
System.out.printf("\u%04X %s%n", (int) ch, ch);
}
测试(UTF-8 格式的源代码)
printNonAscii("Foo ? \uFFFD ç ñ © ¼");
输出
\u00A9 ©
\u00BC ¼
\u00E7 ç
\u00F1 ñ
\uFFFD �
所以我正在编写一个程序,将数据从网页提取到 excel sheet,然后将其打印到文本注释中。但是,我遇到的一个奇怪的问题是,从excel sheet 到文本注释,一个字符发生了变化。 - 变成了? .我的解决方案是遍历这个词,当它到达?并将其更改为 - 。我试过使用我在网上找到的 unicode 并完成了
.replace("(question mark unicode) ", " - ")
无济于事。有谁知道为什么要这样做?你能确认一下的 unicodes 吗?和 - 。所以如果这个词是 "Leo‑III 1.3" 现在是 "Leo?III 1.3" 谢谢你的帮助
replace in java 将字符作为第一个参数,并用第二个参数替换所有出现的地方。
你可以使用这个:
String newStr = str.replaceAll("\?", "-");
replaceAll 将第一个参数作为正则表达式,并用第二个参数替换所有匹配项。
注:\帮助转义?
此外,请务必将结果存储在新的字符串变量中,因为字符串是不可变的。
根据 Java 文档,String class 的 replace
方法采用原语 char
或实现 CharSequence
的对象(如 String ) 作为其参数。
如果要将 Leo?III 1.3 转换为 Leo-III 1.3,请使用:
.replace("?", "-")
?
是字符集编码问题的结果,可能出现在数据管道的许多地方。
实际上可能在字符串的打印中,字符串本身是有效的。
要找出实际的字符值是多少,请尝试 运行 此代码为字符串中找到的所有非 ASCII 字符打印 Unicode 转义码:
public static void printNonAscii(String s) {
TreeSet<Character> nonAscii = new TreeSet<>();
for (char ch : s.replaceAll("[\r\n\x20-\x7E]", "").toCharArray())
nonAscii.add(ch);
for (char ch : nonAscii)
System.out.printf("\u%04X %s%n", (int) ch, ch);
}
测试(UTF-8 格式的源代码)
printNonAscii("Foo ? \uFFFD ç ñ © ¼");
输出
\u00A9 ©
\u00BC ¼
\u00E7 ç
\u00F1 ñ
\uFFFD �