簡體   English   中英

如何檢查字符串是否包含C#Winforms中的文本

[英]How to check if string contains the text in C# Winforms

誰能幫我用C#Winforms編寫一段代碼,該代碼可以給我一個布爾值,即一段字符串是否包含幾個單詞。

例如,如果我要檢查字符串是否存在串僅測試串 “的數據提供給測試只串”。

我已經編寫了以下代碼,但是無論字符串包含單詞還是否,它都使我成真。

    private bool ContainsText(string input)
    {
        for (int i = 0; i < input.Length; i++)
        {
            if (((int)input[i] >= 65 && (int)input[i] <= 90) || ((int)input[i] >= 97 && (int)input[i] <= 177))
                return true;
        }

        return false;
    }

當我調用以下行時,我總是得到true ,這是不正確的

MessageBox.Show(ContainsText("test only string").ToString());

在代碼方面,如果由於某種原因input 任何字符位於“ A到Z”或“ a到U + 00B1”中,您的ContainsText代碼將立即返回true

但是問題還不止於此:您已經描述了兩個輸入-要檢查的字符串(例如“僅測試字符串”)和要檢查其存在的字符串(例如“提供數據以僅測試字符串”)。 您的方法僅接受一個輸入,而不使用任何其他狀態。 因此它不可能工作。 值得退后一步,嘗試弄清為什么您沒有注意到需要兩個輸入-以及為什么實際上您的測試僅使用“僅測試字符串”,卻沒有提及“提供數據以僅測試字符串”。

您實際上根本不需要任何方法- String已經具有一個Contains方法:

if (textToCheck.Contains(textToFind))
{
    ...
}

假設您要進行序數比較。 如果要以區分文化或不區分大小寫的方式進行檢查,請結合使用IndexOf和適當的StringComparison

一個簡單的string.IndexOf可能帶有枚舉來忽略大小寫:

 string myTestString = "Data is provided to Test Only String";
 if(myTestString.IndexOf("test only string", StringComparison.CurrentCultureIgnoreCase) >= 0)
    Console.WriteLine("Found text");

當然,字符串類也有一個Contains方法,但是它是作為對IndexOf的調用實現的,不可能忽略大小寫。

public bool Contains(string value)
{
     return (this.IndexOf(value, StringComparison.Ordinal) >= 0);
}

您可以使用String對象的Contains方法。

var a = "Data is provided to test only string";
var b = "test only string";

if (a.Contains(b))
     MessageBox.Show("yes");

使用IndexOf

http://www.dotnetperls.com/indexof

使用示例

string str = "string to test";
bool result = str.IndexOf("The hosted network started.") != -1;

MessageBox.Show(result.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM