Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换字符或序列列表中未包含的所有字符_C#_.net_Regex - Fatal编程技术网

C# 替换字符或序列列表中未包含的所有字符

C# 替换字符或序列列表中未包含的所有字符,c#,.net,regex,C#,.net,Regex,我正在编写C#代码,该代码应该将所有未知(unknown=其他可用)字符替换为我选择的一个字符(例如?)。可用字符可以是单个字符、或两个或多个字符的序列 例如: 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, @@ Desi

我正在编写C#代码,该代码应该将所有未知(unknown=其他可用)字符替换为我选择的一个字符(例如?)。可用字符可以是单个字符、或两个或多个字符的序列

例如:

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?
其他例子:

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?

如何实现我的目标?

一个关于Wiktor Stribiż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);
var str=“AXBY@@CZ@A";
var matches=Regex.matches(str,“@|[ABC]”).Cast();
var replaced=string.Join(“?”,matches.Select(x=>x.Value));
控制台写入线(已更换);

对于输入
AXBY,返回
A?B?@?C?A
@@CZ@A


记住Dmitry Bychenko的暗示。此示例没有回答他的问题。

匹配它们并加入匹配值。您可以为我的示例案例发布正则表达式吗?问题是,您在否定的前瞻性断言中只使用一个字符。第一个@匹配,但第二个将被删除。您可以使用这个正则表达式来实现这一点:但是使用Wiktor Stribiżew的提示要简单得多。当已知
A
XY
YB
时,
AXYB
的expcred输出是什么?它应该是AXY吗?还是A?YB??是的,我会这样做。这可以根据需要进一步增强。