2011-05-01 21 views
24

Espero que alguien me pueda ayudar. Solo estoy aprendiendo C# y tengo una pregunta simple.¿Cómo puedo verificar si existe una cadena en otra cadena?

Tengo una variable y me gustaría comprobar si existe en otra cadena. Algo así como

if (test contains "abc") { 

} 

¿Hay una manera fácil de hacer esto en C#

+0

http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx – Marlon

+1

Geepers ... Casi respondió que uno de cada pregunta. Use la documentación de la API Lucas ... la fuerza es tan exagerada – corlettk

Respuesta

49

Uso String.Contains:

if (stringValue.Contains(anotherStringValue)) 
{ 
    // Do Something // 
} 
+0

vea mi respuesta a continuación para la variación insensible a mayúsculas – Pellet

10

IndexOf() función hará el trabajo ...
volverá -1 si la cadena no existe

4
string MainString = "String Manipulation"; 
string SearchString = "pul"; 
int FirstChr = MainString.IndexOf(SearchString); 

Este código muestra cómo buscar dentro de una cadena para una cadena secundaria y devuelve una posición de índice del inicio o una -1 que indica que la cadena no se ha encontrado.

también puede usar Contains(), Contiene es un método de instancia en el tipo de cadena, lo que significa que puede llamarlo a una cadena específica en su programa. Tiene un resultado bool, que es verdadero si se encuentra el parámetro, y falso si no se encuentra.

using System; 

class Program 
{ 
    static void Main() 
    { 
    Test("Dot Net Perls"); 
    Test("dot net perls"); 
    } 

    static void Test(string input) 
    { 
    Console.Write("--- "); 
    Console.Write(input); 
    Console.WriteLine(" ---"); 
    // 
    // See if the string contains 'Net' 
    // 
    bool contains = input.Contains("Net"); 
    // 
    // Write the result 
    // 
    Console.Write("Contains 'Net': "); 
    Console.WriteLine(contains); 
    // 
    // See if the string contains 'perls' lowercase 
    // 
    if (input.Contains("perls")) 
    { 
     Console.WriteLine("Contains 'perls'"); 
    } 
    // 
    // See if the string contains 'Dot' 
    // 
    if (!input.Contains("Dot")) 
    { 
     Console.WriteLine("Doesn't Contain 'Dot'"); 
    } 
    } 
} 

cheque C# String Functions and Manipulation para nada acerca de las cadenas.

3

Debes usar Expresiones regulares. Por ejemplo, Regex.IsMatch(test, "abc"). Esto devolverá verdadero si la prueba contiene abc.

+5

Como puede ver arriba, no "necesita" usar expresiones regulares.De hecho, de esa manera puede ser la forma más obtusa, más lenta y más difícil de entender de todos. – VoidKing

3

usando String.Contains(...) puede no ser una buena idea.

String.Contains(...) realiza una comparación ordinal de mayúsculas y minúsculas. Por lo tanto, tenga cuidado con la coincidencia de casos.

por supuesto puede utilizar ToLower() o ToUpper() antes de comprobar

2

Uso pueden utilizar para este String.Contains.

if (test.Contains("abc")) 
{ 
    // Your Code Here 
} 
3
if (stringValue.ToUpper().Contains("FIND_THIS")) 
{ 
    // Do Something // 
} 

es otra buena variación para las búsquedas de mayúsculas y minúsculas.

0

hay algunos métodos que pueden hacer esta validación como CompareTo, Contains, Compare, IndexOfAny y IndexOf.

Compruebe la lista de métodos de la clase String.

string s1 = "ani\u00ADmal"; 
string s2 = "animal"; 
string s3 = "abc"; 
string s4 = "abc"; 
string s5 = "ABC"; 

bool b1 = s1.CompareTo(s2) > -1; // return true, exists 
bool b2 = s3.CompareTo(s4) > -1; // return true, exists 
bool b3 = s3.CompareTo(s5) > -1; // return false, no case sensitive, no exists 

bool b4 = s1.Contains(s2); // return false, no exists 
bool b5 = s3.Contains(s4); // return true, exists 
bool b6 = s3.Contains(s5); // return false, no case sensitive, no exists 

string s6 = "MACHINE"; 
string s7 = "machine"; 
string s8 = "nature"; 

int a = String.Compare(s6, 0, s7, 0, s6.Length, true); // return 0, contain and is less 
int b = String.Compare(s6, 0, s7, 0, s6.Length, false); // return 1, contain and is greater 
int c = String.Compare(s6, 0, s8, 0, s6.Length, true); // return -1, no contain 
int d = String.Compare(s6, 0, s8, 0, s6.Length, false); // return -1, no contain 

int e = s1.IndexOfAny(s2.ToCharArray()); // return 0, exists 
int f = s3.IndexOfAny(s4.ToCharArray()); // return 0, exists 
int g = s3.IndexOfAny(s5.ToCharArray()); // return -1, no case sensitive, no exists 

int h = s1.IndexOf(s2); // return 0, exists 
int i = s3.IndexOf(s4); // return 0, exists 
int j = s3.IndexOf(s5); // return -1, no exists 
Cuestiones relacionadas