gpt4 book ai didi

c# - 替换字符串中的一个字符而不是两个字符

转载 作者:行者123 更新时间:2023-11-30 19:38:24 25 4
gpt4 key购买 nike

我想使用 C# 替换字符串中出现的单个字符而不是两个字符。

例如,我想将 & 替换为一个空字符串,但不是在出现 && 时。又如,a&b&&c替换后变为ab&&c

如果我使用像 &[^&] 这样的正则表达式,它也会匹配 & 之后的字符,我不想替换它。

我发现的另一个解决方案是遍历字符串字符。

您知道更清洁的解决方案吗?

最佳答案

只匹配一个& (不在 & 之前或之后),使用 look-arounds (?<!&)(?!&) :

(?<!&)&(?!&)

参见 regex demo

您尝试使用仍然匹配 字符的否定字符类,并且您需要使用前瞻/后视来检查某些字符是否存在/存在,而不使用它.

参见 regular-expressions.info :

Negative lookahead is indispensable if you want to match something not followed by something else. When explaining character classes, this tutorial explained why you cannot use a negated character class to match a q not followed by a u. Negative lookahead provides the solution: q(?!u).

Lookbehind has the same effect, but works backwards. It tells the regex engine to temporarily step backwards in the string, to check if the text inside the lookbehind can be matched there. (?<!a)b matches a "b" that is not preceded by an "a", using negative lookbehind. It doesn't match cab, but matches the b (and only the b) in bed or debt.

关于c# - 替换字符串中的一个字符而不是两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32986595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com