2013-09-29 2 views
-1

Я пишу эту программу в C#:Как найти подстроку (0,91) из длинной строки?

static void Main(string[] args) 
{ 
    int i; 
    string ss = "fc7600109177";   

    // I want to found (0,91) in ss string 


    for (i=0; i<= ss.Length; i++) 
     if (((char)ss[i] == '0') && (((char)ss[i+1] + (char)ss[i+2]) == "91")) 
      Console.WriteLine(" found"); 
    } 

Что плохого в этой программе, и как я могу найти (0,91)?

ответ

2

Прежде всего, вы не должны бросать в char ваших ss[i] или других. ss[i] и другие уже есть char.

В какой-то момент вы пытаетесь объединить два символа (ss[i+1] и ss[i+2]) в вашем цикле if и после проверки равенства с string. Это не верно. Измените это;

if ((ss[i] == '0') && (ss[i + 1] == '9') && (ss[i + 2]) == '1') 
    Console.WriteLine("found"); 

В третий, который я считаю, что самое главное, не писать код, как этот. Вы можете легко использовать метод String.Contains, который делает именно то, что вы хотите.

Возвращает значение, указывающее, возникает ли указанный объект String внутри этой строки.

string ss = "fc7600109177"; 
bool found = ss.Contains("091"); 

Здесь в DEMO.

использование «содержат» возвращать только истина или ложь и «индекс» обратного расположения строки, но я хочу, чтобы найти местоположение «091» в сс, и если «091» повторить, как: сс = "763091d44a0914 «Как я могу найти второй« 091 »?

Здесь вы можете найти все индексы в своей строке;

string chars = "091"; 
string ss = "763091d44a0914"; 
List<int> indexes = new List<int>(); 
foreach (Match match in Regex.Matches(ss, chars)) 
{ 
    indexes.Add(match.Index); 
} 

for (int i = 0; i < indexes.Count; i++) 
{ 
    Console.WriteLine("{0}. match in index {1}", i+1, indexes[i]); 
} 

Выход будет;

1. match in index: 3 
2. match in index: 10 

Здесь в DEMO.

+1

с большим спасибо – zozo

+0

использования содержит возвращать только истинные или fulse – zozo

+0

@ZainabJawad Так ..? Разве ты этого не хочешь? –

2

Использование String.Contains() для этой цели

if(ss.Contains("091")) 
{ 
    Console.WriteLine(" found"); 
} 
+0

с большим спасибо – zozo

1

если вы хотите знать, где «091» начинается в строке, то вы можете использовать:

var pos = ss.IndexOf("091") 
+0

с большой благодарностью – zozo

Смежные вопросы