_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?
答案 0 :(得分:2)
它永远不会是真的,因为你的元素都不以010开头.StartsWith()只查看从索引0开始的子字符串。
您应该使用String.Contains()代替。
答案 1 :(得分:1)
使用startswith(),它将始终匹配string-input的开始。使用Contains()在字符串输入
中的任何位置搜索和匹配子字符串答案 2 :(得分: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