我有以下输入字符串
some text ) more text
some text , more text
some text ! more text
some text ; more text
some text ? more text
some text . more text
some text)more text
some text,more text
some text!more text
some text;more text
some text?more text
some text.more text
some text )more text
some text ,more text
some text !more text
some text ;more text
some text ?more text
some text .more text
我正在使用Regex.Replace方法来获取
some text) more text
some text, more text
some text! more text
some text; more text
some text? more text
some text. more text
some text) more text
some text, more text
some text! more text
some text; more text
some text? more text
some text. more text
some text) more text
some text, more text
some text! more text
some text; more text
some text? more text
some text. more text
但是我的弦保持不变。
这是我的课:
public class PunctionationSignsSpaceing : ILanguageRuleFormater
{
private string _pattern;
public PunctionationSignsSpaceing()
{
_pattern ="( *[),!;?.] *)";
}
public string FormatString(string str)
{
str = Regex.Replace(
str,_pattern,"$1",
RegexOptions.Multiline|RegexOptions.Compiled
);
return str;
}
}
我在这里做错什么了吗? (我对regex有点陌生。)
谢谢
最佳答案
您的正则表达式无效。您正在用自己替换整个匹配项,这就是为什么结果字符串没有任何变化的原因。
试试那个:
public class PunctionationSignsSpaceing
{
private string _pattern;
public PunctionationSignsSpaceing()
{
_pattern = " *([),!;?.]) *";
}
public string FormatString(string str)
{
str = Regex.Replace(
str, _pattern, "$1 ",
RegexOptions.Multiline | RegexOptions.Compiled
);
return str;
}
}
您还应该考虑将
_pattern
初始化从对象构造函数移至字段本身:public class PunctionationSignsSpaceing
{
private string _pattern = " *([),!;?.]) *";
public string FormatString(string str)
{
str = Regex.Replace(
str, _pattern, "$1 ",
RegexOptions.Multiline | RegexOptions.Compiled
);
return str;
}
}
关于c# - 正则表达式替换标点符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15863261/