Csharp/C#教程:在C#中查找字符串中的所有模式索引分享


在C#中查找字符串中的所有模式索引

如何使用c#查找字符串中模式的所有索引?

例如,我想在字符串中找到所有##模式索引,如45##78$$#56$$JK01UU

  string pattern = "##"; string sentence = "45##78$$#56$$J##K01UU"; IList indeces = new List(); foreach (Match match in Regex.Matches(sentence, pattern)) { indeces.Add(match.Index); } 

indeces将有2,14

编辑代码使其成为一个更清洁的function。

 public IEnumerable FindAllIndexes(string str, string pattern) { int prevIndex = -pattern.Length; // so we start at index 0 int index; while((index = str.IndexOf(pattern, prevIndex + pattern.Length)) != -1) { prevIndex = index; yield return index; } } string str = "45##78$$#56$$JK01UU"; string pattern = "##"; var indexes = FindAllIndexes(str, pattern); 

您可以使用这样的正则表达式搜索来获取字符串中模式的所有索引。

 string input = "45##78$$#56$$JK01UU", pattern = Regex.Escape("##"); Regex rx = new Regex(pattern); var indices = new List(); var matches = rx.Matches(s); for (int i=0 ; i 

另一个试图提高效率:

 public IEnumerable FindPatternIndexes(string input, string search) { var sb = new StringBuilder(input); for (var i = 0; search.Length <= sb.Length; i++) { if (sb.ToString().StartsWith(search)) yield return i; sb.Remove(0,1); } } 

测试。 工作。 但有点愚蠢。

上述就是C#学习教程:在C#中查找字符串中的所有模式索引分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 string foo = "45##78$$#56$$JK01UU"; char[] fooChar = foo.ToCharArray(); int i = 0; bool register = false; foreach (char fc in fooChar) { if (fc == '#' && register == true) { MessageBox.Show("Index: " + (i-1)); } else if (fc == '#') { register = true; } else { register = false; } i++; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1009754.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐