gpt4 book ai didi

c# - 我如何检查一个字符串是否包含 C# 中的字符?

转载 作者:IT王子 更新时间:2023-10-29 03:51:33 28 4
gpt4 key购买 nike

是否有一个函数可以应用于字符串,如果字符串包含字符,该函数将返回 true 或 false。

我有带有一个或多个字符选项的字符串,例如:

var abc = "s";
var def = "aB";
var ghi = "Sj";

例如,如果上面包含小写或大写的“s”,我想做的是有一个函数返回 true 或 false。

if (def.Somefunction("s") == true) { }

同样在 C# 中,我是否需要像这样检查是否为真,或者我是否可以删除“== true”?

最佳答案

可以使用扩展方法.Contains()来自命名空间 System.Linq:

using System.Linq;

...

if (abc.ToLower().Contains('s')) { }

此外,要检查 bool 表达式是否为真,您不需要 == true

由于 Contains 方法是一种扩展方法,我的解决方案可能会造成混淆。以下是两个不需要您添加 using System.Linq; 的版本:

if (abc.ToLower().IndexOf('s') != -1) { }

// or:

if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }

更新

如果愿意,您可以编写自己的扩展方法以便于重用:

public static class MyStringExtensions
{
public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
}

public static bool ContainsAnyCase(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
}
}

然后你可以这样称呼他们:

if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }

在大多数情况下,当处理用户数据时,您实际上想要使用 CurrentCultureIgnoreCase (或 ContainsAnyCase 扩展方法),因为那样您让系统处理大写/小写问题,这取决于语言。在处理计算问题时,例如 HTML 标记的名称等,您希望使用不变区域性。

例如:在土耳其语中,小写的大写字母 Iı (没有点),而不是 i (带点)

关于c# - 我如何检查一个字符串是否包含 C# 中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879774/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com