.NET中是否有内置的IsLowerCase()?

时间:2008-12-23 15:16:31

标签: .net string

.NET中是否有内置的IsLowerCase()

8 个答案:

答案 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);

就病例之间的转换而言:

当然是:

MSDN says

 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()正在进行同样的检查。