- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试生成符合 XSD 中模式的字符串。要删除 XSD 模式中未出现的任何字符,我正在执行以下操作(从我的代码中逐字复制的 replaceAll
调用):
import java.lang.String;
public class HelloWorld {
public static void main(String[] args) {
test("Führ");
}
private static void test( String name ) {
name = name.toUpperCase( );
name = name.replaceAll (
"[^A-ZА-ЯΑ-ΩÄÀÁÂÃÅǍĄĂÆÇĆĈČĎĐÐÈÉÊËĚĘĜĢĞĤÌÍÎÏĴĶĹĻŁĽÑŃŇÖÒÓÔÕŐØŒŔŘẞŚŜŞŠȘŤŢÞȚÜÙÚÛŰŨŲŮŴÝŸŶŹŽŻ, '\\-–]",
""
);
System.out.println(name);
}
}
该片段运行良好,并打印出“FÜHR”。但是,在我运行的环境中,具有完全相同的 replaceAll
声明,replaceAll
调用删除 Ü
字符并打印出 FHR
数据(即名称)来自数据库,并以与代码片段(“Führ”)中相同的字符开头。
我很困惑......可能是什么原因,我该如何解决这个问题?
<小时/>PS:源文件的编码为UTF-8(Eclipse .settings: encoding//<<<src-path>>>.java=UTF-8
)
最佳答案
显然,当匹配带有变音符号、撇号、重音符号等的字符时,应该使用 unicode 单代码点来指定字符。
例如,对于 à 字符,正则表达式应指定 \u00E0
而不是文字 à
。原因是,à 字符可以通过两种方式进行编码:
在正则表达式中指定 unicode 代码点 \u00E0
将匹配 à 的两种编码。在正则表达式中指定文字 à
将仅匹配该字符在代码片段中的编码方式,如果将其编码为双代码点,则它将与单代码点不匹配 -同一角色的点版本。
使用 unicode 单代码点重写正则表达式解决了问题。对于问题中的 Ü 字符,正则表达式应指定 \u00DC
。这与 Ü 的单代码点和双代码点编码相匹配。
我在这里找到了解决方案的信息:Regex Tutorial - Unicode Characters and Properties (段落:匹配特定代码点)。
关于java - 使用带有变音符号、撇号、重音符号等的文字字符使用正则表达式剥离字符失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47962187/
我想解析以下 xml 结构: 为了解析这个 element name="?????? 结构,我按以下方式使用 XPath: XPath xPath
我在 OSX 机器上运行 Python 2.7。我正在尝试在 smb 共享上执行 os.walk。 for root, dirnames, filenames in os.walk("./test")
我是一名优秀的程序员,十分优秀!