Как я могу проверить, существует ли строка в другой строке

#c#

#c#

Вопрос:

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

У меня есть переменная, и я хотел бы проверить, существует ли она в другой строке. Что-то вроде

 if ( test contains "abc" ) {

}
  

Есть ли простой способ сделать это на C#

Комментарии:

1. msdn.microsoft.com/en-us/library/dy85x1sa.aspx

2. Чудики… Вы почти ответили на этот вопрос в своем вопросе. Используйте документацию API Luke… сила просто ооочень велика

Ответ №1:

Используйте String.Содержит:

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

Комментарии:

1. смотрите мой ответ ниже для изменения без учета регистра

2. нечувствительность к регистру может быть достигнута с помощью параметра StringComparison, нет необходимости что-либо преобразовывать в ToUpper(): string1.Contains(string2, StringComparison.OrdinalIgnoreCase)

Ответ №2:

IndexOf() функция выполнит всю работу…
Он вернет -1, если строка не существует

Ответ №3:

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

Этот код показывает, как выполнить поиск подстроки внутри строки, и либо возвращает позицию индекса в начале, либо -1, что указывает на то, что строка не найдена.

вы также можете использовать Contains() , Contains — это метод экземпляра для типа string, что означает, что вы можете вызвать его для определенной строки в вашей программе. Он имеет результат bool, который равен true, если параметр найден, и false, если он не найден.

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

проверьте строковые функции и манипуляции со строками на C # на предмет наличия чего-либо о строках.

Ответ №4:

использование String.Contains(...) может быть не очень хорошей идеей.

String.Contains(...) выполняет сравнение с учетом регистра порядковых номеров. Итак, будьте осторожны с сопоставлением регистра.

конечно, вы можете использовать ToLower() или ToUpper() перед проверкой

Ответ №5:

Обратитесь к этому.

 String.Contains(...)
  

Ответ №6:

 if (stringValue.ToUpper().Contains("FIND_THIS"))
{  
    // Do Something // 
} 
  

Еще один хороший вариант для поиска без учета регистра.

Ответ №7:

Вы должны использовать регулярные выражения. Например Regex.IsMatch(test, "abc") . Это вернет true, если тест содержит abc.

Комментарии:

1. Как вы можете видеть выше, вам не «нужно» использовать регулярные выражения. На самом деле, этот способ может быть самым тупым, медленным и трудным для понимания из всех возможных.

Ответ №8:

Для этого можно использовать String.Contains .

 if (test.Contains("abc"))
{  
    // Your Code Here
}
  

Ответ №9:

Существует несколько методов, которые могут выполнить эту проверку, таких как CompareTo , Contains , Compare IndexOfAny и IndexOf .

Проверьте список методов String класса.

 string s1 = "aniu00ADmal";
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
  

Ответ №10:

Вы можете использовать .Contains() , но также используйте, .ToUpper() поскольку .Contains() чувствителен к регистру.

 if(string1.ToUpper().Contains(string2.ToUpper())
{
    //Your code goes here
}