簡體   English   中英

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

[英]Is there a built-in IsLowerCase() in .NET?

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

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();

您是說Char.IsLower(ch);

請記住,本地化使這成為一個不平凡的問題。 只要您不在乎,第一個示例就可以:

string s = ...
s.All(c => char.IsLower(c));

如果您確實在意,請按照以下方式進行操作:

s.ToLower(CultureInfo.CurrentUICulture) == s;

這使您有機會解決文化問題。

編輯:沒有看到您的問題的實際含義。 您可以使用:

char.IsLower(c);

至於在案例之間輕松轉換:

當然是:

MSDN說

 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 )。

正如其他人提到的那樣,您可以使用char.IsLower(ch)輕松為單個char執行此操作

但是要擴展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。

怎么樣:

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;
        }


    }

balabaster,請不要將此方法與FindAll / Count一起使用。 所有你需要的是

return Input.ToList().Exists(c => Char.IsUpper(c));

它將停止對第一個大寫字符的迭代。FindAll創建一個新的List,並且您僅使用Count屬性。 如果我們有一個大寫的長字符串,您將得到原始字符串的副本。

伙計們為什么會濫用LINQ(ToList(),ToArray(),All(),Any(),...)? 我也喜歡LINQ和lambda,但是在這種情況下,我認為我們需要的是古老的foreach。 請參閱TcK的答案作為參考-但是如果我們刪除了多余的部分,我們會做得更好

char.IsLetter( c )

因為IsLower()正在執行相同的檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM