[VB6][VB.NET][C#] 字串處理函數
[VB6][VB.NET][C#] 字串處理函數
常用VB字串處理函數
使用內建函數:
Len:計算字串的長度。
範例:strLen=Len("Taiwan")
結果:6
Mid:依開始位置擷取固定長度字串。
範例:strLen=Mid("Taiwan",1,2)
結果:Ta
Left:將字串由左側擷取固定長度。
範例:strLen=Left("Taiwan",2)
結果:Ta
Right:將字串由右側擷取固定長度。
範例:str=Right(" Taiwan ",2)
結果:an
Lcase:將字串中的大寫字母變成小寫。
範例:str=Lcase("Taiwan")
結果:taiwan
Ucase:將字串中的小寫字母變成大寫。
範例:str=Ucase("Taiwan")
結果:TAIWAN
Trim:刪頭尾空白
範例:str=Trim(" Taiwan ")
結果:Taiwan
Ltrim:刪字串左側的空白
範例:str=Ltrim(" Taiwan ")
結果:Taiwan
Rtrim:刪字串右側的空白
範例:str=Rtrim(" Taiwan ")
結果: Taiwan
刪字串 兩側 的空白
Replace:將字串中的某字串,以另一字串代替。
範例:str=Replace("Taiwan","Tai"," Nan ")
結果:Nanwan
Instr:傳回子字串在字串中的第一次出現位置。
範例:strLen=Instr("ABCabc","a")
結果:4
Space:產生指定個數空白。
範例:Space(10)
結果:4個空白
String:產生指定個數的字元。
範例:str=String(5,"$")
結果:$$$$$
範例:str=String(4,66)
結果:BBBB
Strreverse:將字串前後反轉。
範例:str=Strreverse(" Taiwan ")
結果:nawiaT
Split:字串分割
範例:str=Split("Taiwan","T")
結果:
str(0)="T"
str(1)="aiwan"
.NET Framework:比較字串
http://msdn.microsoft.com/zh-tw/library/fbh501kz(VS.80).aspx
String.Compare:比較兩個字串的值。傳回整數值。
String.CompareOrdinal:比較兩個字串,不管本地文化特性。傳回整數值。
String.CompareTo:將目前的字串物件與另一個字串加以比較。傳回整數值。
String.StartsWith:判斷字串的開頭是否為傳入的字串。傳回布林值。
String.EndsWith:判斷字串的結尾是否為傳入的字串。傳回布林值。
String.Equals:判斷兩個字串是否相同。傳回布林值。
String.IndexOf:從您正在檢查的字串開頭開始,傳回字元或字串的索引位置。傳回整數值。
String.LastIndexOf:從您正在檢查的字串結尾開始,傳回字元或字串的索引位置。傳回整數值。
字串處理範例:
http://msdn.microsoft.com/zh-tw/library/ms228364%28VS.80%29.aspx
常用C#字串處理函數
http://msdn.microsoft.com/zh-tw/library/system.string_methods%28VS.80%29.aspx
名稱 | 說明 | |
---|---|---|
Clone | 傳回對 String 這個執行個體的參考。 | |
Compare | 多載。 比較兩個指定的 String 物件。 | |
CompareOrdinal | 多載。 藉由評估每個字串中對應的 Char 物件之數字值,比較兩個 String 物件。 | |
CompareTo | 多載。 將這個執行個體與指定的物件或 String 相比較,並傳回它們的相對值指示。 | |
Concat | 多載。 串連一個或多個 String 的執行個體,或者一個或多個 Object 執行個體值的 String 表示。 | |
Contains | 傳回值,指出指定的 String 物件是否會出現在這個字串內。 | |
Copy | 使用與指定的 String 相同的值,建立 String 的新執行個體。 | |
CopyTo | 將字元的指定數目從這個執行個體的指定位置,複製到 Unicode 字元陣列的指定位置。 | |
EndsWith | 多載。 判斷 String 執行個體的結尾是否符合指定之字串。 | |
Equals | 多載。 覆寫。 判斷兩個 String 物件是否具有相同的值。 | |
Format | 多載。 以與對應物件值相等的文字,取代指定 String 中的每個格式項目。 | |
GetEnumerator | 擷取可以逐一查看這個字串中個別字元的物件。 | |
GetHashCode | 覆寫。 傳回這個字串的雜湊程式碼。 | |
GetType | 取得目前執行個體的 Type。 (繼承自 Object)。 | |
GetTypeCode | 傳回類別 String 的 TypeCode。 | |
IndexOf | 多載。 報告這個字串中 String 或一或多個字元之第一個符合項目的索引。 | |
IndexOfAny | 多載。 報告指定 Unicode 字元陣列中的任何字元於這個執行個體中第一個符合項目的索引。 | |
Insert | 在這個執行個體的指定索引位置,插入 String 的指定執行個體。 | |
Intern | 擷取指定的 String 的系統參考。 | |
IsInterned | 擷取對指定 String 的參考。 | |
IsNormalized | 多載。 指出這個字串是否為特定的 Unicode 正規化格式。 | |
IsNullOrEmpty | 指出指定的 String 物件是否為 Null 參照 (即 Visual Basic 中的 Nothing) 或 Empty 字串。 | |
Join | 多載。 將指定 String 陣列每個元素之間的指定分隔符號 String 串連,產生單一的串連字串。 | |
LastIndexOf | 多載。 報告這個執行個體中指定 Unicode 字元或 String 最後項目的索引位置。 | |
LastIndexOfAny | 多載。 報告 Unicode 陣列中的一個或多個指定字元在這個執行個體中最後項目的索引位置。 | |
Normalize | 多載。 傳回新的字串,其二進位表示為特定的 Unicode 正規化格式。 | |
op_Equality | 判斷兩個指定的 String 物件是否具有相同的值。 | |
op_Inequality | 判斷兩個指定的 String 物件是否具有不同的值。 | |
PadLeft | 多載。 將這個執行個體中的字元靠右對齊,以空格或指定的 Unicode 字元在左側填補至指定的總長度。 | |
PadRight | 多載。 將這個字串中的字元靠左對齊,以空格或指定的 Unicode 字元在右側填補至指定的總長度。 | |
ReferenceEquals | 判斷指定的 Object 執行個體是否為相同的執行個體。 (繼承自 Object)。 | |
Remove | 多載。 從這個執行個體中刪除指定數目的字元。 | |
Replace | 多載。 以另一個指定的 Unicode 字元或 String,取代這個執行個體中指定的 Unicode 字元或 String 的所有項目。 | |
Split | 多載。 傳回 String 陣列,其中包含這個執行個體中由指定的 Char 或 String 陣列之元素所分隔的子字串。 | |
StartsWith | 多載。 判斷 String 執行個體的開頭是否符合指定之字串。 | |
Substring | 多載。 從這個執行個體擷取子字串。 | |
ToCharArray | 多載。 將這個執行個體中的字元複製到 Unicode 字元陣列中。 | |
ToLower | 多載。 傳回轉換成小寫的這個 String 複本。 | |
ToLowerInvariant | 傳回轉換成小寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。 | |
ToString | 多載。 覆寫。 將這個執行個體的值轉換為 String。 | |
ToUpper | 多載。 傳回轉換成大寫的這個 String 複本。 | |
ToUpperInvariant | 傳回轉換成大寫的這個 String 物件之複本,透過的方式是使用不因文化特性而異的大小寫規則。 | |
Trim | 多載。 將指定字元集的所有項目從這個執行個體的開頭和結尾移除。 | |
TrimEnd | 將陣列中指定的字元集之所有項目從這個執行個體的結尾移除。 | |
TrimStart | 將陣列中指定的字元集之所有項目從這個執行個體的開頭移除。 |
String.Substring( ):從指定的字元位置開始截取字串
語法:字串變數.Substring(左起始位數 , 取幾位)
範例:string s1 = str.Substring(0,2);
String.length():取得字串長度
String.Remove(int1,int2):從int1(起始位置)開始刪除長度為int2的字串
String.Insert(int,string):在int的位置插入string
String.Substring(int):從參數開始取出剩下的字串
String.Substring(int1,int2):取出int1開始長度為int2的字串
String.IndexOf(string):傳回第一次搜尋到字串(string)的位置
String.IndexOf(string,int):傳回第一次搜尋到字串(string)的位置,開始搜尋位置為int
String.LastIndexOf(string):跟IndexOf功能類似,但從後面開始搜尋
String.LastIndexOf(string,int):跟IndexOf功能類似,但從後面開始搜尋
String.Replace(char,char):取代字元
String.ToLower():將英文轉成小寫
String.ToUpper():將英文轉成大寫
String.Trim():刪除字串前後的空白字元
String.TrimEnd():刪除字串尾部的空白字元
String.TrimStart():刪除字串開頭的空白字元
持續將入範例及常用說明
2008/11/20 更新
若有謬誤,煩請告知,新手發帖請多包涵
您好,我想請教一下,像新細明體擴充字集或如Unicode 中 Extend A、B、C、D (尤其是B以後) 好像一個漢字都是佔二個字元。如此用Mid()等函式要如何得每個漢字的正確位置呢。等於是說漢字有些是1個字元長度,有的是2個字元長度。如何用函數作正確的漢字字串的比對或切割呢。因為鄙人是中文專業,很多時候需要用到罕用漢字,CJK Ext B C D 的字集都不能免。尤其在做說文解字呢古字書時。本人自修VBA及VB,故有此問。感謝 您。守真敬啟
回覆刪除一般來說這些處理函數是使用自原來計算的所以比較不受字碼影響,但是如果是使用 byte 計算的函數才會受影響
刪除所以例如 Dim str As String = "這是中文字串"
str.lenght 因該會回傳 6 這樣..
感謝 Albert Hsieh 前輩答覆。只是所舉例乃一般中文,當然還不成問題。(通常Big5中文字,絕無問題;一般的unicode也還好,除末附一例),可是如果您試著用CJK擴展B、C、D區的字試試,就會出錯。如,
回覆刪除「������」(分別是擴展B、C、D的漢字)
Dim str As String = "������"
如果您用Len()函式,或用您所用的 .Lenght 方法來試,都會發現明明只有3個中文字,可是這二個函式算出來的是長6(因為每個中文字的字元長度是2)。
像這樣,如果再用mid() 、inSri() 等函式來作處理,恐怕真要差之毫釐謬以千里了。可以想像!
是以如何判斷哪些字才是一個中文單元,成了刻不容緩的事啊。
難得得到專家達人親覆,想趁此機會請教或分享一個問題,
如「焘」「焒」二漢字雖然是一般的unicode裡的(CJK Unified Ideographs),不是擴充字集裡的,但是他倆在Access裡排序是沒法排出的來,製作不能重複的索引欄位則會出錯(重複),篩選或查詢也都同時會被篩撿出來,無法區別,也不知是何情況。試在Excel排序或篩選,好像也分不開來!南無阿彌陀佛
前所舉三個漢字果然無法正常顯示
回覆刪除附三字之連結以供參考(其實隨舉B、C、D擴展區的漢字試驗都可以,因為B區以後的漢字全成了二個字元長的字串了)
https://www.google.com/search?q=%F0%A8%99%B8
https://www.google.com/search?q=%F0%AB%9C%A2
https://www.google.com/search?q=%F0%AB%A0%93
或參見我此下複製的回覆
刪除https://plus.google.com/113855220143725210637/posts/2VtW9ReEEJ8