c#包含字符串的一部分

raz*_*aze 8 c# string contains

所以我有一个Materiel-objects列表.在Materiel我有15个get和set方法.我想构建一个搜索方法,循环列表中的所有对象,以及每个Materiel对象中的所有变量.循环部分很容易,但我正在努力使用字符串包含部分.搜索词可以是例如"acto",我应该得到"Tractor"的命中.我已经尝试过使用string-Contains类,但据我所知,它只检查从位置0开始的字符串.所以"Tra"得到一个命中,但不是"acto".

课程中是否有任何构建,或者我应该自己编程?

对不起,解释不好.

我的代码.我现在看到我得到子串的命中,但也有其他结果:)

    protected void Button_search_Click(object sender, EventArgs e)
    {
        string searchTerm = TextBox1.Text.ToString().ToLower();

        TableRow row;
        TableCell cell;

        int rowNumber = 1;

        foreach (Materiell mat in allItems)
        {
            if (searchTerm.Contains(mat.itemID.ToString().ToLower()) ||
                searchTerm.Contains(mat.manufacturer.ToLower()) ||
                searchTerm.Contains(mat.model.ToLower()) ||
                searchTerm.Contains(mat.serialNo.ToLower()) ||
                searchTerm.Contains(mat.dateProd.ToString().ToLower()) ||
                searchTerm.Contains(mat.location.ToLower()) ||
                searchTerm.Contains(mat.mainCategory.ToLower()) ||
                searchTerm.Contains(mat.subCategory.ToLower()) ||
                searchTerm.Contains(mat.dateAcquired.ToString().ToLower()) ||
                searchTerm.Contains(mat.price.ToString().ToLower()) ||
                searchTerm.Contains(mat.ownerID.ToString().ToLower()) ||
                searchTerm.Contains(mat.extra.ToString().ToLower()) ||
                searchTerm.Contains(mat.textComment.ToLower()) ||
                searchTerm.Contains(mat.active.ToString().ToLower()))
            {
                row = new TableRow();
                row.ID = "row" + rowNumber.ToString();
                rowNumber++;

                cell = new TableCell();
                cell.Text = "<a href=\"#\" class=\"opendiv\">" + mat.itemID.ToString() + "</a>";
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.manufacturer.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.model.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.serialNo.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.dateProd.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.location.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.mainCategory.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.subCategory.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.dateAcquired.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.price.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.ownerID.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.extra.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.ownDefData.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.textComment.ToString();
                row.Cells.Add(cell);

                cell = new TableCell();
                cell.Text = mat.active.ToString();
                row.Cells.Add(cell);

                Table1.Rows.Add(row);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

ili*_*ian 15

"some string".Contains("str") 将返回true,你是否遇到案件敏感性问题?

如果是这样,你可以使用这个:

public static bool Contains(this string source, string toCheck, StringComparison comp) {
  return source.IndexOf(toCheck, comp) >= 0;
}

string title = "STRING";
bool contains = title.Contains("string", StringComparison.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)

(取自Case insensitive'Contains(string)')