0
_comboBoxItems array

    [0] = "01 01010304"
    [0] = "01 01230304"
    [0] = "01 01010784"
    [0] = "01 01135404"

typedSoFar = "010"

    if (_comboBoxItems[i].StartsWith(typedSoFar, StringComparison.CurrentCultureIgnoreCase))
    {
        match = _comboBoxItems[i];

        break;
    }

しかし、if は真ではありません。なぜ?たとえば、010 は 01 01010304 の一部です。StringComparison.CurrentCultureIgnoreCase の問題になる可能性がありますか?

4

3 に答える 3

2

010 で始まる要素がないため、決して真ではありません。StartsWith() は、インデックス 0 から始まる部分文字列のみを調べます。

代わりに String.Contains() を使用する必要があります。

于 2012-05-28T08:03:26.600 に答える
1

startswith() を使用すると、常に文字列入力の開始に一致します。Contains() を使用して、文字列入力の任意の場所で部分文字列を検索して一致させます

于 2012-05-28T08:02:24.573 に答える
0

typedSoFarスペースなしで文字列の先頭に一致させたい場合は、次を使用します。

if (_comboBoxItems[i].StartsWith(typedSoFar.Trim())
{
    match = _comboBoxItems[i];
}

上記はこれに一致します01 01010304が、これには一致しません01 11010304

typedSoFarを文字列の一部にしたい場合は、次を使用します。

if (_comboBoxItems[i].Contains(typedSoFar)
{
    match = _comboBoxItems[i];
}

*あなたの場合、私は使用する目的がわかりませんStringComparison.CurrentCultureIgnoreCase

于 2012-05-28T08:17:48.460 に答える