gpt4 book ai didi

c# - 从字符串中背靠背删除子字符串,但不是所有出现的 - c#

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:11 25 4
gpt4 key购买 nike

我有一个像这样的字符串:

"Water Water ASDF FDSA"

以及像这样的字符串:

"Water Water ASDF FDSA Water"

我只需要删除背靠背子串的第一个实例,这样这两种情况就变成了:

"Water ASDF FDSA" and "Water ASDF FDSA Water"

我尝试做的事情:

        List<string> substrings = FindSubstrings(returnString);
IEnumerable<string> duplicateItems = from x in substrings
group x by x into grouped
where grouped.Count() > 1
select grouped.Key;

所以我有一个单独的 FindSubstrings 方法,它返回一个包含原始字符串中所有子字符串的列表。然后我(从网上我发现)了一种检测重复项的方法,这些重复项的列表被放置在 IEnumerable 中。

解决此问题的最佳方法是:

       for (int i = 0; i < substrings.Count; i++)
{
//if duplicateItems contains the substring and substring[i+1] is also the same item, then remove it)
}

问题是我无法从 duplicateItems 中获取字符串,如果它包含多个重复的子字符串,因为没有对 IEnumerable 的索引。关于执行此操作的最佳方法有什么想法吗?

最佳答案

您可以使用正则表达式进行搜索:

\b(\w+)\s+(?=\1)

并替换为空字符串。

RegEx Demo

(?=\1) 是积极的前瞻,确保使用 (\w+) 捕获的单词重复。

代码:

string repl = Regex.Replace(input, @"\b(\w+)\s+(?=\1)", "");

关于c# - 从字符串中背靠背删除子字符串,但不是所有出现的 - c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548424/

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