gpt4 book ai didi

c# - 如何仅从字符串中删除某些子字符串?

转载 作者:IT王子 更新时间:2023-10-29 04:46:34 25 4
gpt4 key购买 nike

使用 C#,我有一个字符串,它是一个包含多个查询的 SQL 脚本。我想删除用单引号引起来的字符串部分。我可以使用 Regex.Replace 以这种方式执行此操作:

string test = "Only 'together' can we turn him to the 'dark side' of the Force";
test = Regex.Replace(test, "'[^']*'", string.Empty);

结果:“我们只能把他变成原力”

我想做的是删除引号之间的子字符串,除了包含特定子字符串的子字符串。例如,使用上面的字符串,我想删除带引号的子字符串,但包含“dark”的子字符串除外,这样得到的字符串是:

结果:“我们只能把他变成原力的‘黑暗面’”

如何使用 Regex.Replace 或其他技术来实现?我目前正在尝试一种涉及使用 Substring()IndexOf()Contains() 的解决方案。

注意:我不在乎“dark side”周围的单引号是否被删除,所以结果也可能是:“Only can we turn him to the dark side of the Force.”我这样说是因为使用 Split() 的解决方案会删除所有单引号。

编辑: 我还没有使用 Substring()IndexOf() 等的解决方案。通过“致力于, “我的意思是我在脑海中思考如何做到这一点。我没有代码,这就是为什么我还没有发布任何代码。谢谢。

编辑: VKS 的以下解决方案有效。我没有逃避\b 的第一次尝试,这就是它失败的原因。此外,除非我在整个字符串周围加上单引号,否则它也不起作用。

test = Regex.Replace(test, "'(?![^']*\\bdark\\b)[^']*'", string.Empty);

最佳答案

'(?![^']*\bdark\b)[^']*'

试试这个。查看演示。替换为空字符串。您可以在此处使用lookahead来检查''是否包含单词黑暗

https://www.regex101.com/r/rG7gX4/12

关于c# - 如何仅从字符串中删除某些子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105661/

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