这可能(某处)之前曾被问过,但找不到任何文件(我看过了!)。
假设我声明了一个字符串:
String Test = "abcdefg";
如何通过成对搜索字符串来搜索字符串以查看是否可以在字符串中的任何位置看到“cd”,例如:
{ab}{bc}{cd}{de}{ef}{fg}
也就是说,如果我将每个值分开,并搜索彼此相邻的一对字符?是否有内置功能?
我已经考虑过为此使用char数组,但似乎(逻辑上)非常“重”/“慢”。是否有更好的解决方案来搜索此字符串?
编辑1
一旦我看到这个“cd”,我就需要在那个位置 doSomething()(我已经使用substring
方法实现了。
答案 0 :(得分:1)
答案 1 :(得分:1)
与Neo的答案类似,但是在循环中获取字符串中的所有实例:
string Test = "abcdefgcd";
int index = Test.IndexOf("cd");
while (index > -1)
{
//DoSomething();
index = Test.IndexOf("cd", ++index);
}
第一个IndexOf
检查是否存在您想要的内容,而第二个IndexOf
(在循环中)检查最后一个索引后的匹配。
在上面我们找到两个匹配,然后循环结束。
答案 2 :(得分:0)
没有功能构建可以做到这一点。 有一个for循环应该做你想要的。
类似的东西:
string str = string.empty;
for (i=0;i<ch.length;i++) {
if (i != ch.length) {
str += ch[i] + ch[i+1];
}
}
你也可以使用正则表达式,但也不会很快。
为了大规模优化,您可以实现字节移位。
答案 3 :(得分:-1)
在这种情况下,字符串字符的 ASCII 代码是您的朋友,完整的工作示例:
var yourString = "abcdefg";
var x = '\0';
for (var i = 0; i < yourString.Length; i++)
{
//check whether i+1 index is not out of range
if (i + 1 != yourString.Length)
{
var test = yourString[i + 1];
x = yourString[i];
if(x.ToString() + test.ToString() == "cd")
{
Console.Write("Found at position " + i)
}
}
}