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;
    }

但如果永远不是真的。为什么?例如,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];
}

以上将匹配 this01 01010304但不匹配 this 01 11010304

如果您希望 thetypedSoFar成为字符串的一部分,请使用:

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

*在你的情况下,我没有看到使用StringComparison.CurrentCultureIgnoreCase

于 2012-05-28T08:17:48.460 回答