[英]Is there a built-in or widely-available uncased string type for .NET
我經常發現自己處理的字符串與其他字符串的比較應忽略大小寫,即Oracle參數。 我看到太多ToUpper()
或ToUpperInvariant()
。 我考慮過要構建一個包含對string
的引用的小類,該類的getter和setter會為我解決這個問題,但是我想知道這種類是否內置於.NET或某些廣泛使用的庫中。 理想情況下,此類具有以下優點:
ToUpper()
(閱讀下一篇,了解為什么它不只是實現特殊的比較器) char
具有相同的值不同的值S) -即針對某個子集char
會有一個地圖以每個指標的相對套管指數,節省一定數目每個char
位數取決於語言 編輯0:我得到第1點,我理解為什么使用StringComparison
參數會更好,但是默認情況下使用此StringComparison
編寫單獨的string
Type
是不合理的嗎? 否則,我會在所有看到此類字段( username
, emailAddress
, vendorCode
等)的地方鍵入內容
編輯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
而不是調用ToUpper
或ToUpperInvariant
進行忽略大小寫的字符串比較。
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.