2013-09-29 2 views
-1

Je vous écris ce programme en C#:Comment rechercher une sous-chaîne (0,91) à partir d'une chaîne longue?

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

Quel est le problème dans ce programme et comment puis-je trouver (0,91)?

Répondre

2

Tout d'abord, vous ne devez pas jeter à char vos ss[i] ou autres. ss[i] et d'autres sont déjà char. Par la suite, vous essayez de concaténer deux char (ss[i+1] et ss[i+2]) dans votre boucle if et après avoir vérifié l'égalité avec string. C'est faux. Changez-le en;

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

En troisième lieu, je pense que le plus important, ne pas écrire de code comme ça. Vous pouvez facilement utiliser String.Contains méthode qui fait exactement ce que vous voulez.

retourne une valeur indiquant si l'objet String spécifié se produit au sein de cette chaîne.

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

Voici un DEMO.

utilisation « contiens » return seulement vrai ou faux et « indice de » lieu de retour de chaîne mais je veux trouver l'emplacement de « 091 » en art et si « 091 » répétition comme: ss = "763091d44a0914 "Comment puis-je trouver la deuxième" 091 "??

Voici comment vous pouvez trouver tous les index dans votre chaîne;

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

La sortie sera;

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

Voici un DEMO.

+1

avec un grand merci – zozo

+0

utilisation retour contiennent seulement vrai ou fulse – zozo

+0

@ZainabJawad Alors ..? N'est-ce pas ce que tu veux? –

2

Utilisez String.Contains() à cet effet

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

avec un grand merci – zozo

1

si vous voulez savoir où « 091 » commence dans la chaîne, vous pouvez utiliser:

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

avec grand merci – zozo

Questions connexes