我正在处理C#代码,它应该将所有未知(未知=其他可用的)字符替换为我选择的一个字符(例如'?')。可用字符可以是单个字符,或两个或多个字符的序列。
例如:
Input string: AXBY@@CZ
Available characters or sequences: A, B, C, @@
Desired output: A?B?@@C?
其他例子:
Input string: AXBY@CZ
Available characters or sequences: A, B, C, @@
Desired output: A?B??C?
我想使用正则表达式实现此目的。我最接近解决方案的是这样的正则表达式:
(?!@@|[ABC]).
但是在像这样的输入字符串的示例中,它将导致错误的结果:
Input string: AXBY@@CZ
Result from above regex: A?B?@?C?
Instead of wanted by me: A?B?@@C?
我如何实现目标?
答案 0 :(得分:3)
WiktorStribiżew提示的样本:
var str = "AXBY@@CZ@A";
var matches = Regex.Matches(str, "@@|[ABC]").Cast<Match>();
var replaced = string.Join("?", matches.Select(x => x.Value));
Console.WriteLine(replaced);
为输入A?B?@@?C?A
返回AXBY@@CZ@A
。
请记住Dmitry Bychenko的暗示。这个样本没有回答他的问题。