用java中的基本" - "替换em-dash的正确正则表达式

use*_*705 13 java

我的问题涉及String类的replaceAll方法.

我的目的是用基本的" - "替换文本中的所有em-dashes.我知道em-dash的unicode角色是\ u2014.

我用以下方式尝试了它:

String s = "asd – asd";
s = s.replaceAll("\u2014", "-");
Run Code Online (Sandbox Code Playgroud)

但是,em-dash并没有被替换.我做错了什么?

Pet*_*tai 27

问题编辑后的次要编辑:

你可能根本就没有使用em-dash.如果你不确定你拥有什么,一个很好的解决方案是简单地找到并替换所有破折号... em或其他.看看这个答案,你可以尝试使用Unicode破折号标点符号来表示所有破折号==>\\p{Pd}

String s = "asd – asd";
s = s.replaceAll("\\p{Pd}", "-");
Run Code Online (Sandbox Code Playgroud)

使用上面的代码替换em破折号和常规破折号的工作示例.

参考:Unicode正则表达式
public String replaceAll(String regex, String replacement)