2014-12-09 3 views
4

Я знаю, что есть много таких вопросов, как это. Но я действительно не мог найти ничего, что могло бы решить мою проблему.Проверьте, содержит ли строка номер C#

Я хочу проверить, содержит ли строка определенный номер ввода. Смотрите следующий пример:

public Boolean checkString() 
{ 
    string input = "2.5.8.12.30"; 
    string intToFind = "3"; 

    if (input.contains(intToFind)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

Это возвращает истину, но я хочу, чтобы вернуться ложным, так как строка intToFind является 3, а не 30. Так что это содержит(), что является проблемой.

Как мне его искать только 3?

+1

Является ли строка всегда разграниченной по периодам? Если нет, то какие еще возможные форматы существуют? –

+0

Он всегда делится на периоды. –

+0

Я вижу 2 человека, которые отказались от этого вопроса. Мне всегда любопытно, когда я получаю downvoted, поэтому, если вы можете оставить комментарий, который будет приятным! Я просто хочу улучшить, и кажется, что я допустил ошибку или что этот вопрос может иметь дубликат. –

ответ

13

Вы можете использовать String.Split + Contains:

bool contains3 = input.Split('.').Contains("3"); 
+4

Это все равно вернет true –

+5

@SriramSakthivel: нет, это не так. –

+0

не получится, если 30 - 130 .. –

0
string[] words = input.Split('.'); 
if (words.contains("3")){do something...} 
+3

Это должно быть 'words.Contains (" 3 ")'. – juharr

2

Вы можете разделить свой вход с помощью String.Split('.') в массив. Теперь используйте Array.contains, чтобы проверить, если элемент находится в пределах массива

bool contained = input.Split('.').Contains("3"); 
7
bool anyThree = input.Split('.').Any(str => str == "3"); 
+1

Вот что «Содержит» метод, который будет работать, но не прямой. –

+3

@SriramSakthivel - Твой парень, который запутался в «Содержит» выше, и вы сказали, что это не прямо? Я бы предположительно использовал решение contains в своем коде, но stackoverflow не является сайтом с одним ответом. Это также хороший вариант. –

+0

Confused yes. Это для вас важно? Я не сказал, что это не так. хороший вариант. Я только что сказал, прямо, чтобы использовать «Содержит». Больше не меньше. –

0

Вы также можете использовать Regex, которые могли бы быть немного излишним.

string str = "2.5.8.12.30"; 
string strToFind = "3"; 
bool contains = Regex.Match(str, string.Format(@"\W{0}\W",strToFind)).Success; 
Смежные вопросы