.NET中是否有内置的IsLowerCase()
?
答案 0 :(得分:7)
public static bool IsLowerCase( this string text ) {
if ( string.IsNullOrEmpty( text ) ) { return true; }
foreach ( char c in text )
if ( char.IsLetter( c ) && !char.IsLower( c ) )
return false;
return true;
}
"someString".IsLowerCase();
答案 1 :(得分:6)
您的意思是Char.IsLower(ch);
吗?
答案 2 :(得分:3)
请记住,本地化使这成为一个非常重要的问题。第一个例子很好,只要你不在乎:
string s = ...
s.All(c => char.IsLower(c));
如果你照顾,请这样做:
s.ToLower(CultureInfo.CurrentUICulture) == s;
这使您有机会解决文化问题。
答案 3 :(得分:2)
编辑:没有看到你问题的实际含义。你可以使用:
char.IsLower(c);
就病例之间的转换而言:
当然是:
string upper = "CONVERTED FROM UPPERCASE";
Console.WriteLine(upper.ToLower());
它是string
类的一部分。
还有TextInfo
类:
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
Console.WriteLine(textInfo.ToTitleCase(title));
Console.WriteLine(textInfo.ToLower(title));
Console.WriteLine(textInfo.ToUpper(title));
允许更多变化来改变大写等等(如ToTitleCase
)。
答案 4 :(得分:1)
正如其他人所提到的,你可以使用char.IsLower(ch)轻松地为单个字符执行此操作
但是为了扩展String原语,这不是很困难。您可以使用Runtime.CompilerServices命名空间相对简单地扩展BCL:
Imports System.Runtime.CompilerServices
Module CustomExtensions
<Extension()> _
Public Function IsLowerCase(ByVal Input As String) As Boolean
Return Return Input.All(Function(c) Char.IsLower(c))
End Function
End Module
或者在C#中,那将是:
using System.Runtime.CompilerServices;
static class CustomExtensions
{
public static bool IsLowerCase(this string Input)
{
return Input.All(c => char.IsLower(c));
}
}
现在您可以使用:
来解决这个问题Console.WriteLine("ThisIsMyTestString".IsLowerCase())
哪个会返回false,因为字符串中包含大写字符。
答案 5 :(得分:0)
怎么样:
public bool IsLower(string TestString)
{
if (String.IsNullOrEmpty(TestString))
{
return true;
}
string testlower = TestString.ToLowerInvariant();
if (String.Compare(TestString, testlower, false) == 0)
{
return true;
}
else
{
return false;
}
}
答案 6 :(得分:0)
balabaster, 请不要将此方法与FindAll / Count一起使用。你所需要的只是
return Input.ToList().Exists(c => Char.IsUpper(c));
它将停止对第一个大写字符的迭代.FindAll创建一个新的List,并且只使用Count属性。如果我们有一个大写的长字符串,你将得到一个原始字符串的副本。
答案 7 :(得分:-1)
为什么这个LINQ滥用(ToList(),ToArray(),All(),Any(),...)?我也喜欢LINQ和lambdas,但在这种情况下,我认为好的旧foreach就是我们所需要的。请参阅TcKs的答案作为参考 - 但如果我们删除多余的
,我们可以做得更好char.IsLetter( c )
因为IsLower()正在进行同样的检查。