使用C#来检查字符串是否包含在字符串数组中。

23 浏览
0 Comments

使用C#来检查字符串是否包含在字符串数组中。

我想使用C#来检查一个字符串值是否包含字符串数组中的某个单词。例如,

string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //是否为数组中的一个项?
{
}

我该如何检查'stringToCheck'的字符串值是否包含数组中的一个单词?

0
0 Comments

使用C#检查字符串是否包含字符串数组中的字符串的原因是,提问者想要知道如何检查一个句子是否包含一个单词列表中的任何一个单词。然而,现有的答案只是检查了一个单词列表是否包含一个特定的单词,没有解决问题。

解决方法是使用LINQ中的String.Contains方法来检查字符串是否包含字符串数组中的任何一个字符串。以下是一个示例代码:

string[] words = { "apple", "banana", "orange" };
string sentence = "I like to eat apples";
if (words.Any(word => sentence.Contains(word)))
{
    // Your stuff goes here
}

在上面的代码中,我们首先定义了一个包含一些单词的字符串数组和一个句子。然后,我们使用LINQ中的Any方法来检查句子是否包含数组中的任何一个单词。如果条件成立,则可以在if语句块中执行相关操作。

需要注意的是,String.Contains方法是区分大小写的。如果需要进行大小写不敏感的比较,可以使用String.IndexOf方法。以下是一个示例代码:

string[] words = { "apple", "banana", "orange" };
string sentence = "I like to eat apples";
if (words.Any(word => sentence.IndexOf(word, StringComparison.OrdinalIgnoreCase) >= 0))
{
    // Your stuff goes here
}

在上面的代码中,我们使用StringComparison.OrdinalIgnoreCase参数来进行大小写不敏感的比较。

总之,通过使用LINQ中的String.Contains方法或String.IndexOf方法,我们可以轻松地检查一个字符串是否包含一个字符串数组中的任何一个字符串。这样,我们就可以解决提问者的问题了。

0
0 Comments

使用C#来检查一个字符串是否包含在字符串数组中的字符串的方法如下:

using System.Linq;
if(stringArray.Any(stringToCheck.Contains))
/* or a bit longer: (stringArray.Any(s => stringToCheck.Contains(s))) */

这个方法会检查`stringToCheck`是否包含`stringArray`中的任何一个子字符串。如果你想确保它包含所有的子字符串,将`Any`改为`All`:

if(stringArray.All(stringToCheck.Contains))

在.NET 2.0中可以使用Linq To Objects(即答案中使用的字符串检查)通过LinqBridge使用。详情请参考albahari.com/nutshell/linqbridge.aspx

如果需要进行大小写不敏感的比较,可以使用以下代码:

stringArray.Any(s => s.IndexOf(stringToCheck, StringComparison.CurrentCultureIgnoreCase) > -1)

在这个问题中,通过使用`Any()`和`All()`,可以使用相同的语法,例如:

if(stringArray.All(stringToCheck.Contains))

如果字符串数组中的一个字符串为空,这个方法会处理比较错误。因此不推荐使用。

在.NET 2.0中可以使用以下代码(对于数组类型):

if (Array.Exists(stringArray, stringToCheck.Contains)) // 检查是否存在包含在字符串数组中的子字符串
if (Array.TrueForAll(stringArray, stringToCheck.Contains)) // 检查是否所有的子字符串都包含在字符串数组中

`List<>`类型也有相同名称的方法,但这些是实例方法。

你似乎不小心颠倒了`stringToCheck`和`s`的作用?

如果需要将整个字符串与字符串数组中的每个元素进行比较,那么上述代码将给出错误的结果。例如,`stringToCheck = docx`,`stringArray = [doc, docy]`。另一个没某些情况下的解决方法是将`s`转换为小写,然后使用`.Contains`方法进行比较。

0
0 Comments

使用C#检查字符串是否包含字符串数组中的字符串的原因是可能需要在一个字符串中查找是否包含字符串数组中的任何一个字符串。解决方法可以使用循环遍历字符串数组,然后使用Contains方法来检查字符串是否包含数组中的字符串。另外,还可以使用LINQ来更简洁地实现这个功能。

以下是一个示例代码:

string stringToCheck = "text1";
string[] stringArray = { "text1", "testtest", "test1test2", "test2text1" };
foreach (string x in stringArray)
{
    if (stringToCheck.Contains(x))
    {
        // 处理...
    }
}

如果需要更好的解决方案,可以参考Anton Gogolev在Stack Overflow上的回答,他使用了LINQ来实现。

有人对代码进行了一些修改,例如修改为`if (stringToCheck.Contains(s))`,并且表示这个解决方法有效。

也有人尝试使用`if (stringArray.Contains(stringToCheck))`来实现,也表示这个方法很好用。

但是,也有人提醒不要使用这个解决方法,而是使用LINQ。

对于那些在字符串数组中看不到`Contains`方法的人,可以检查代码文件中是否有`using System.Linq;`这个命名空间。

需要注意的是,LINQ在旧版本的软件中可能不可用,因此需要更新到至少.NET 2.x版本。

这个问题的要求是检查字符串是否包含字符串数组中的任何一个字符串,而不是反过来。

有人提交了修改建议来纠正这个答案,但是出于某种原因,这些修改建议一直被拒绝。

使用`Contains`方法可能不是最好的解决方案。因为使用`Contains`方法来检查字符串是否包含数组中的字符串时,只要字符串中包含数组中的任何一个字符串,就会返回true。因此,如果`stringArray`为`{"text", "text1", "1"}`,所有的字符串都会返回true。更好的方法是使用`Equals`方法来进行精确匹配。除非你真的只想知道字符串中是否包含数组中的任何一个字符串,但是问题本身并不太清楚。

0