簡體   English   中英

.NET是否有內置的或廣泛使用的無大小寫字符串類型

[英]Is there a built-in or widely-available uncased string type for .NET

我經常發現自己處理的字符串與其他字符串的比較應忽略大小寫,即Oracle參數。 我看到太多ToUpper()ToUpperInvariant() 我考慮過要構建一個包含對string的引用的小類,該類的getter和setter會為我解決這個問題,但是我想知道這種類是否內置於.NET或某些廣泛使用的庫中。 理想情況下,此類具有以下優點:

  1. 無需轉換ToUpper() (閱讀下一篇,了解為什么它不只是實現特殊的比較器)
  2. 這將使用較少的內存(因為就沒有必要存儲char具有相同的值不同的值S) -即針對某個子集char會有一個地圖以每個指標的相對套管指數,節省一定數目每個char位數取決於語言

編輯0:我得到第1點,我理解為什么使用StringComparison參數會更好,但是默認情況下使用此StringComparison編寫單獨的string Type是不合理的嗎? 否則,我會在所有看到此類字段( usernameemailAddressvendorCode等)的地方鍵入內容

編輯1:第二點呢? 在字符串密集型應用程序中,將所有char索引至少縮短26個會浪費時間嗎? 也許措詞不正確...

編輯2(校正數學):例如,在#1,說我有一個Username樣字段,它總是在一些遺留DB通過存儲過程持久化為上,並且該邏輯是太普遍在所有DB程序來改變。

我認為char的通常長度為2 ^ 16,但是假設我知道DB會將其視為最多具有2 ^ 8。 因此,我不僅必須一遍又一遍地繼續顯式地編寫StringComparison ,而且該應用程序每個char浪費了8位。 如果我被迫在內存中存儲約100000個字符串以進行某些操作,則意味着我被迫使用10 ^ 5 * 8 /(10 ^ 6 * 8)= 0.5 MB,這根本不是很大。

可以使用string.Equals重載String.Equals Method (String, String, StringComparison使用StringComparison參數指定忽略大小寫String.Equals Method (String, String, StringComparison而不是調用ToUpperToUpperInvariant進行忽略大小寫的字符串比較。

if (string.Equals("ABC", "abc", StringComparison.InvariantCultureIgnoreCase))//true
{

}

要么

if ("ABC".Equals("abc", StringComparison.InvariantCultureIgnoreCase))
{
}

不,那里沒有。 在.NET中,只有一種字符串類型-System.String。

String.Equals可能具有IgnoreCase選項。

暫無
暫無

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

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