字符串[].包含 找不到匹配项,即使文本在数组中也是如此

本文关键字:数组 文本 包含 找不到 字符串 | 更新日期: 2023-09-27 18:36:58

我已经把显示器放到我的程序中,可以清楚地看到正在搜索的字符串存在。

是否有可能"隐形"字符阻止此操作?

    var items = new List<string>(currComponent.Split(new string[] 
    { "'r'n", "'n" }, StringSplitOptions.None));
    string feedback = string.Empty;
                foreach (string i in items)
                {
                    feedback += i + ". ";
                }
                ScriptingObject.WriteLogMessage
                 ("feedback:" + feedback + "<EOF>", true);
   if (items.Contains(attributeDescription))
显示

结果显示变量反馈包含短语"Flue",但items.Contains("Flue")没有找到它。

Message: Status message: 2015-01-09 10:36:18 | feedback:_ ,. Boiler Flue Type. 
Boiler make. Boiler Model. Gas Appliance Safety Protector. __.. . <EOF>
Next message: unable to process an Update Location record ...because of error:
item Flue not found .

字符串[].包含 找不到匹配项,即使文本在数组中也是如此

因为 items 中的字符串不是"Flue"而是"Boiler Flue Type",并且List.Contains()搜索完全匹配,请记住您调用List.Contains()而不是String.Contains()

请注意,有一种更简单的方法来连接字符串:

string feedback = String.Join(". ", items);

使用 LINQ,您可以使用以下内容:

if (items.Any(x => x.Contains(attributeDescription))) { }

如果您没有明确需要List<string>您也可以保留String.Split()返回类型 ( string[] ),以将所有内容放在一起:

var items = currComponent.Split(new string[] { "'r'n", "'n" },
    StringSplitOptions.None);
ScriptingObject.WriteLogMessage("feedback: " 
    + String.Join(". ", items)
    + "<EOF>", true);
if (items.Any(x => x.Contains(attributeDescription))) {
}