当前位置: 首页 > 编程语言 > C#

如何查找字符串中特定句子的所有出现位置?分享

时间:2023-04-10 21:42:00 C#

如何找到一个字符串中所有出现的特定句子?假设我有这样一个字符串:stringsource="Todayisfriday!I'mhavingprogrammingthis.Todayisfriday!Tomorrowissaturday.Todayisfriday!"我想搜索这个字符串,抓取所有句子,说“今天是星期五!”,然后用我刚刚发现的句子创建一个新字符串。上述字符串的预期结果是:stringoutput="Todayisfriday!Todayisfriday!Todayisfriday!"编辑:LINQ不是强制性的。谢谢!这是一个非LINQ方法:stringstr="Todayisfriday!I'mhavingprogrammingthis.Todayisfriday!Tomorrowissaturday.Todayisfriday!";StringBuildersb=newStringBuilder();整数索引=0;do{index=str.IndexOf("今天是星期五!",index);if(index!=-1){sb.Append("今天是星期五!");索引++;}}while(index!=-1);字符串重复=sb.ToString();实际上不需要找到匹配项。由于您是根据搜索模式创建新字符串,因此只需计算搜索字符串的出现次数就足够了。如果愿意,您可以用更快的子串计数算法替换正则表达式。stringsource="今天是星期五!我在编程时遇到了问题。今天是星期五!明天是星期六。今天是星期五!";stringsearchPattern="今天是星期五!";intcount=Regex.Matches(source,searchPattern).Count;字符串结果=string.Concat(Enumerable.Repeat(searchPattern,count));正则表达式查找:.*?(今天是星期五).*?(?=1|$)替换:$1说明。*?#匹配句子出现之前的所有内容(今天是星期五!)#匹配句子.*?#匹配句子后的所有内容...(?=1|$)#...直到字符串的下一次出现或结尾好吧,您需要做的第一件事就是将您的一个字符串变成多个字符串。String.Split()应该在这里工作,不需要正则表达式:varsentences=inputString.Split('.','!');一旦你有了单独的句子,你只需要找到匹配的句子:vartodayIsFridaySentences=sentences.Where(s=>s.Contains("Todayisfriday"));...最后把它们放回原位;如果你绝对必须使用Linq:以上是C#学习教程:如何在一个字符串中查找特定句子的所有出现?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——varouputString=todayIsFridaySentences.Aggregate(newStringBuilder(),(s,b)=>b.Append(s)).ToString();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: