我需要替换字符串中的所有特殊字符,但以下内容除外(包括字母字符):
这就是我现在所拥有的:
RejectChanges()
这将替换所有特殊字符。如何修改它以不替换提到的字符(表情符号)但替换任何其他特殊字符?
答案 0 :(得分:1)
您可以使用已知技术:匹配并捕获您需要的内容,并仅匹配您要删除的内容,并替换为第1组的后向引用:
(:(?:[D()P])|;\))|[^0-9a-zA-Z\s]
替换为$1
。注意我在字符类中添加了\s
,但如果您不需要空格,请将其删除。
请参阅regex demo
模式说明:
(:(?:[D()P])|;\))
- 第1组(我们需要保留的内容):
:(?:[D()P])
- :
后跟D
,(
,)
或P
|
- 或;\)
- ;)
子字符串|
分隔的分支扩展捕获组。|
- 或...... [^0-9a-zA-Z\s]
- 匹配除ASCII数字,字母(和空格)以外的任何字符,但正如我所提到的,如果您不需要保留空格,则可以删除\s
。答案 1 :(得分:0)
我会使用RegEx来匹配所有表情符号并从文本中选择它们
fatal error: unexpectedly found nil while unwrapping an Optional value
模式string input = "Hi there!!! :)";
string output = string.Concat(Regex.Matches(input, "[;|:][D|P|)|(]+").Cast<Match>().Select(x => x.Value));
[;|:][D|P|)|(]+
以:或;
[;|:]
以D,P,)或(
[D|P|)|(]
一个或多个