2017-12-12 1 views
1

Ich habe eine Reihe von Zeichenfolgen. Ich möchte mit der Saite vergleichen, die ich von JSON bekomme. Vergleich sollte so sein. Zum Beispiel: Wenn der Kontoname in einer Zeichenfolge Google und in anderen die Google Inc ist, dann sollte Google übereinstimmen, da Google Teil des Firmennamens von Google Inc. ist. Sonst nicht.String-Matching in C#

-Code, den ich geschrieben habe:

for (int i = 0; i < accountCount; i++) 
     { 
      //// account is found in the array     
      name[i] = account.Entities[i].Attributes["name"].ToString(); 
      if (name[i] == message.Current.org_name) 
      { 
       flag = 1; 
       c.CreateOpportunity(message); 
       break; 
      } 
     }     
      //// account is not found in the array     
     if (flag == 0) 
     { 
      c.CreateAccount(message); 
      c.CreateOpportunity(message); 
     } 
+1

[ 'String.IndexOf'] (https : //msdn.microsoft.com/en-us/library/k8b1470s.aspx) und ['String.Contains'] (https://msdn.microsoft.com/en-us/library/dy85x1sa (v = vs. 110) .aspx) sind deine Freunde. – lamandy

+0

Ich nehme an, du willst 'if (name [i] .Contains (mySearchString))'. – HimBromBeere

+0

@HimBromBeere ya das ist perfekt – vidhi

Antwort

0

Try Contains Funktion zu verwenden, anstatt:

for (int i = 0; i < accountCount; i++) 
{ 
    //// account is found in the array     
    name[i] = account.Entities[i].Attributes["name"].ToString(); 
    if (name[i].Contains(message.Current.org_name) 
     || message.Current.org_name.Contains(name[i])) 
    { 
     flag = 1; 
     break; 
    } 
}     
//// account is not found in the array     
if (flag == 0) 
    c.CreateAccount(message); 
c.CreateOpportunity(message); 
+0

Ich habe das versucht. zum Beispiel name [i] = Agniket und message.Current.org_name = Agni. Es hat nicht funktioniert. – vidhi

+0

Dies ist nicht möglich, überprüfen Sie das Debugging Schritt für Schritt, müssen Sie einen anderen Zeilenfehler haben. 'Agniket" .Contains ("Agni") 'ist immer' true' – GGO

+0

tatsächlich Es ist so: name [i] .Contains (message.Current.org_name) – vidhi

0

Sie Contains für Groß- und Kleinschreibung Suche

oder IndexOf verwenden können, um mehr Optionen speficify mit Vergleichskriterien

jedoch für den Spaß an der Sache wir Any auf einem Array oder einer Liste

verwenden können Hinweis: keine der oben genannten Prüfung auf null

Enthält

var org = message.Current.org_name; 

var found = account.Entities.Any(// does any entity contain org ? 
    x => x.Attributes["name"]  // Get Attribute 
     .ToString()    // Convert it to string if needed 
     .Contains(org));   

if (found) 
{ 
    c.CreateAccount(message); 
} 

c.CreateOpportunity(message); 

wenn Sie möchten, Eine case-insensative Suche, die Sie verwenden können String.IndexOf

Index Von

var found = account.Entities.Any(// does any entity contain org ? 
    x => x.Attributes["name"]  // Get Attribute 
     .ToString()    // Convert it to string if needed 
     .IndexOf(org, StringComparison.OrdinalIgnoreCase) >= 0);  

Referenzen

String.Contains - String.Contains Method (String)

String.IndexOf - String.IndexOf Method (String, StringComparison)

Coparison Typ - StringComparison Enumeration