[英]How can I check if a string contains a character in C#?
是否有一个函数可以应用于字符串,如果字符串包含一个字符,该函数将返回 true 或 false。
我有包含一个或多个字符选项的字符串,例如:
var abc = "s";
var def = "aB";
var ghi = "Sj";
例如,我想做的是有一个函数,如果上面包含小写或大写的“s”,它将返回 true 或 false。
if (def.Somefunction("s") == true) { }
同样在 C# 中,我是否需要检查这样的事情是否属实,或者我可以删除“== true”吗?
您可以使用命名空间System.Linq
的扩展方法.Contains()
:
using System.Linq;
...
if (abc.ToLower().Contains('s')) { }
而且,要检查布尔表达式是否为真,您不需要== true
由于Contains
方法是一个扩展方法,我的解决方案可能会令人困惑。 这里有两个不需要你using System.Linq;
添加的版本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
(带点) 。
您可以使用IndexOf
方法,该方法具有适合字符串比较类型的重载:
if (def.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0) ...
此外,您不需要== true
,因为 if 语句只需要一个计算结果为bool
的表达式。
以下应该工作:
var abc = "sAb";
bool exists = abc.IndexOf("ab", StringComparison.CurrentCultureIgnoreCase) > -1;
bool containsCharacter = test.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0;
如果不知道如何使用字符串和布尔值,就很难在 C# 中工作。 但无论如何:
String str = "ABC";
if (str.Contains('A'))
{
//...
}
if (str.Contains("AB"))
{
//...
}
如果您打算大量使用它,您可以创建自己的扩展方法。
public static class StringExt
{
public static bool ContainsInvariant(this string sourceString, string filter)
{
return sourceString.ToLowerInvariant().Contains(filter);
}
}
用法示例:
public class test
{
public bool Foo()
{
const string def = "aB";
return def.ContainsInvariant("s");
}
}
这是大多数人所做的一个例子
using System;
class Program
{
static void Main()
{
Test("Dot Net Perls");
Test("dot net perls");
}
static void Test(string input)
{
Console.Write("--- ");
Console.Write(input);
Console.WriteLine(" ---");
//
// See if the string contains 'Net'
//
bool contains = input.Contains("Net");
//
// Write the result
//
Console.Write("Contains 'Net': ");
Console.WriteLine(contains);
//
// See if the string contains 'perls' lowercase
//
if (input.Contains("perls"))
{
Console.WriteLine("Contains 'perls'");
}
//
// See if the string contains 'Dot'
//
if (!input.Contains("Dot"))
{
Console.WriteLine("Doesn't Contain 'Dot'");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.