用C#中的常用破折号替换长破折号

时间:2019-08-02 15:41:30

标签: c# regex replace

我有一个包含多个破折号的字符串,但是它包含长破折号。

我可以使用哪种方法对破折号进行归一化?

text = Regex.Replace(text, @"(\u2012|\u2013|\u2014|\u2015)", "-");

预期输出类似于11-1111-11/11 实际情况几乎相同,但有些破折号很长。 (我不能放在破折号中,因为stackoverflow无法识别它。) enter image description here

2 个答案:

答案 0 :(得分:0)

以下是短划线上的一些信息。您也许可以将本文中的破折号复制并粘贴到您的代码中,并使用string.replace

The em dash

在下面的SO帖子中找到答案:

replacing the em dash

看起来像以下代码为其他人解决了这个问题:

String s = "asd – asd";
s = s.replaceAll("\\p{Pd}", "-");

答案 1 :(得分:-1)

这有效:

It is '�'
0xffffffb0 

您的带有竖线字符( private const string DashPattern = @"[\u2012\u2013\u2014\u2015]"; private static Regex _dashRegex = new Regex(DashPattern); public static string RemoveLongDashes(string s) { return _dashRegex.Replace(s, "-"); } )的表达式不是有效的正则表达式。如果要替换所有元音,请使用|之类的表达式,即一组方括号内的选项。

相关问题