2014-08-27 36 views
-1

这可能已经(某处)被问过,但找不到任何文档(我看过!)。如何在c#netMF中的字符串中找到一对字符?

说我宣布类似的字符串:

String Test = "abcdefg"; 

我怎么会去搜索字符串在对通过搜索字符串,要看看我能看见“CD”的字符串的任何地方:

{ab}{bc}{cd}{de}{ef}{fg} 

也就是说,如果我将每个值分开,然后搜索一对相邻的字符?有没有内置函数?

我想过使用char数组来做这件事,但它似乎(在逻辑上)非常“沉重”/“缓慢”。会有更好的解决方案来搜索这个字符串吗?

编辑1

有一次,我看到这个 “CD”,然后,我会需要DoSomething的()在该位置(我已经使用substring方法来实现。

+0

是'String.Contains'你在找什么?如in,'bool result = Test.Contains(“cd”);'。 – 2014-08-27 08:36:12

+0

不幸的是,我不认为** string.Contains **在netMF中可用? – jbutler483 2014-08-27 08:38:17

+0

哇。我很惊讶。然后使用'Test.IndexOf(“cd”)> = 0'。 – 2014-08-27 08:41:40

回答

1

试试这个。

String.IndexOf(...) != -1 

欲了解更多信息,read here.

+0

这会告诉我它是在那里,但我也需要找到它的位置:( – jbutler483 2014-08-27 08:48:06

+1

@ jbutler483阅读neo发布的链接,它确实给你它的位置,他测试的是'-1',因为那是什么如果没有位置(即它不存在),将返回+1。只有正确的答案在这里+1。 – 2014-08-27 08:56:09

+0

噢好吧 - 我只是认为这是一个“1”或“-1”的结果。对不起@neo! – jbutler483 2014-08-27 09:00:54

-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) 
       } 

      } 
     } 
+0

为什么向下投票,请解释 – simsim 2014-08-27 08:57:46

0

没有构建的功能,将做到这一点。有一个for循环的 应该做你想做的。

类似的东西:

string str = string.empty; 

for (i=0;i<ch.length;i++) { 

    if (i != ch.length) { 
    str += ch[i] + ch[i+1]; 
    } 
} 

你也可以使用,无论正则表达式是不会快任。

为了大规模优化,可以实现字节移位。

1

类似从新的答案,但在循环中得到字符串中的所有实例:

string Test = "abcdefgcd"; 
int index = Test.IndexOf("cd"); 

while (index > -1) 
{ 
    //DoSomething(); 
    index = Test.IndexOf("cd", ++index); 
} 

第一IndexOf检查是否存在你想要什么,而第二个IndexOf(在循环中)检查匹配最后一个索引。

在上面我们找到两个匹配,然后循环结束。

+0

请注意,我假设.NETMF与.NETCF类似,因为它的框架支持也有限,但核心功能通常可用[(来自MSDN)](http://msdn.microsoft.com/zh-cn/我们/库/ 7cct0x33(v = VS.90)的.aspx)。 – 2014-08-27 09:30:05

相关问题