2014-08-27 3 views
-1

Это, вероятно, (где-то) было задано раньше, но не может найти на нем никакой документации (я посмотрел!).Как найти пару символов в строке в C# netMF?

Say я объявил строку типа:

String Test = "abcdefg"; 

Как бы я идти о поиске в строку, чтобы увидеть, если я мог видеть «CD» в любом месте строки путем поиска строки в парах, как:

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

То есть, если я разделить каждое из значений, и искали пары символов рядом друг с другом? Есть ли встроенная функция для этого?

Я думал об использовании массива char для этого, но он (по логике) кажется очень «тяжелым»/«медленным». Будет ли лучшее решение для поиска этой строки?

EDIT 1

После того, как я вижу это "CD", я бы тогда нужно DoSomething() в этом положении (о котором я уже реализованного с помощью метода substring.

+0

Это 'String.Contains' что вы ищете? Как и в, 'bool result = Test.Contains (" cd ");'. –

+0

К сожалению, я не думаю ** string.Contains ** доступен в netMF? – jbutler483

+0

Ничего себе. Я удивлен. Затем используйте 'Test.IndexOf (" cd ")> = 0'. –

ответ

1

Попробуйте это.

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

Для получения дополнительной информации, read here.

+0

, который сказал бы мне, что он был там, но мне также нужно было бы найти его местоположение :( – jbutler483

+1

@ jbutler483 прочитал ссылку neo, выложил ее, он дает вам свое местоположение. Он тестирует '-1', поскольку это то, что будет возвращен, если нет места (т. е. его не существует). +1 для правильного ответа здесь –

+0

О, хорошо, я просто подумал, что это результат «1» или «-1». Извините @neo! – jbutler483

-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

0

Нет встроенной функции, которая сделает это. , имеющий цикл for, должен делать то, что вы хотите.

что-то подобное:

string str = string.empty; 

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

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

также вы можете использовать регулярное выражение, однако, что обыкновение быть быстрым либо.

Чтобы оптимизировать это в больших масштабах, вы можете реализовать смещение байтов.

1

Подобный ответ от Neo, но в цикле, чтобы получить все экземпляры в пределах строки:

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/en- нас/библиотека/7cct0x33 (v = VS.90) .aspx). –