如何检查字符串是否包含C#中的字符?
是否有一个函数可以应用于字符串,如果字符串包含字符,该函数将返回true或false 我有一个或多个字符选项的字符串,例如:如何检查字符串是否包含C#中的字符?,c#,string,C#,String,是否有一个函数可以应用于字符串,如果字符串包含字符,该函数将返回true或false 我有一个或多个字符选项的字符串,例如: var abc = "s"; var def = "aB"; var ghi = "Sj"; 例如,我想做的是有一个函数,如果上面包含小写或大写的“s”,那么它将返回true或false 同样在C#中,我是否需要检查这样的内容是否正确,或者我是否可以删除“==true”您可以使用命名空间系统中的扩展方法。Linq: 使用System.Linq; ... 如果(abc.T
var abc = "s";
var def = "aB";
var ghi = "Sj";
例如,我想做的是有一个函数,如果上面包含小写或大写的“s”,那么它将返回true或false
同样在C#中,我是否需要检查这样的内容是否正确,或者我是否可以删除“==true”您可以使用命名空间
系统中的扩展方法。Linq
:
使用System.Linq;
...
如果(abc.ToLower().Contains('s')){}
此外,要检查布尔表达式是否为true,不需要==true
由于Contains
方法是一种扩展方法,因此我的解决方案可能会令人困惑。这里有两个版本不需要您使用System.Linq添加代码>:
if(abc.ToLower().IndexOf('s')!=-1){
//或:
if(abc.IndexOf(“s”,StringComparison.CurrentCultureIgnoreCase)!=-1{}
更新
如果愿意,您可以编写自己的扩展方法,以便于重用:
公共静态类MyStringExtensions
{
public static bool containsAnyCase不变量(这个字符串是haystack,char-needle)
{
return haystack.IndexOf(针、线比较、不变量文化识别)!=-1;
}
公共静态bool ContainsAnyCase(这个字符串是干草堆、字符针)
{
return haystack.IndexOf(针、线比较、CurrentCultureInogoreCase)!=-1;
}
}
然后你可以这样称呼他们:
if(def.containsAnycase不变量('s')){
//或
if(def.ContainsAnyCase('s')){
在大多数情况下,在处理用户数据时,您实际上希望使用CurrentCultureInogoreCase
(或ContainsAnyCase
扩展方法),因为这样可以让系统处理大小写问题,这取决于语言。在处理计算问题时,如HTML标记的名称等,您希望使用不变的区域性
例如:在土耳其语中,小写字母的大写字母I
是ı
(不带点),而不是I
(带点)。以下应适用:
var abc = "sAb";
bool exists = abc.IndexOf("ab", StringComparison.CurrentCultureIgnoreCase) > -1;
使用函数String.Contains()
举个例子
abs.Contains("s"); // to look for lower case s
更多信息来自MSDN。您可以使用IndexOf
方法,该方法具有适合字符串比较类型的重载:
if (def.IndexOf("s", StringComparison.OrdinalIgnoreCase) >= 0) ...
另外,您不需要==true
,因为if语句只需要一个计算结果为bool
的表达式。如果不知道如何处理字符串和布尔值,那么在C#中工作将很困难。但无论如何:
String str = "ABC";
if (str.Contains('A'))
{
//...
}
if (str.Contains("AB"))
{
//...
}
下面是一个大多数人都做过的例子
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'");
}
}
}
如果您计划经常使用此方法,您可以创建自己的扩展方法
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");
}
}
这并不能回答OPs的问题-他们想知道是否存在大写或小写的“s”-只有在字符串中有小写的“s”时,您的解决方案才会计算为true。嗯,我没有发现字符串重载。包含采用char参数。@ScottSmith这是在中定义的扩展方法。您需要使用System.Linq添加
我更喜欢使用str.IndexOf('s')>=0
,但这可能只是风格上的差异。在阅读理解时,这对我来说更有意义。MSDN没有列出接受字符的Contains方法,如第一个示例中所示。要获得该语法,您需要使用LINQ或编写自己的Contains扩展。
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");
}
}