将字符串数组与另一个数组中的起始值进行比较

本文关键字:数组 比较 字符串 另一个 | 更新日期: 2023-09-27 18:35:53

我有一个具有固定值的字符串数组和一个文本动态更改的富文本框。富文本框中的某些行以字符串数组中的值开头。我只想选择富文本框中不以字符串数组中的值开头的行。下面的代码返回富文本框中的所有行。

string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
c =>parts.Any(b=>!c.StartsWith(b)));

我的问题是:如何仅选择富文本框中不以字符串数组中的值开头的行?

将字符串数组与另一个数组中的起始值进行比较

Any更改为All。在编写时,它返回所有行,因为一行不能以多个单词开头。

您当前的代码说,"如果部分中有任何单词不是该行的第一个单词,则返回 true。显然,这条线不能以"foo"和"派生:"开头。所以你总是得到真实的。

你想说,"如果部分中的所有单词都不是行的第一个单词,则返回 true。

另一种方法是:

lines = richTextBox1.Lines.Where(c => !parts.Any(b => c.StartsWith(b)));

这可能就是我写它的方式。

您将 (!) 运算符放在错误的位置。如果你想使用Any那么

string[] parts = new string[] { "Definition:", "derivation:", "derivations:"};
IEnumerable<string> lines = richTextBox1.Lines.Where(
                                 c => !parts.Any(b => c.StartsWith(b)));