細節雜記 移除字串中的字元 remove indexof 字串大小比較 compare
...//這裡設定字串a的值
//查詢"string"並刪除
int i = a.IndexOf("string");
a=a.Remove(i, "string".Length); // 結果在返回值中
string str1="how are you";
str1.IndexOf("is")這個的結果應該是多少?
-1
沒有找到就返回-1 找到了返回索引
二、 字串比較
-
1:要判斷2個字串變數是否相等,最高效的方法是看它們是否指向相同的記憶體地址。前面使用RefernceEquals方法來比較。如果2個變數指向的是不同的記憶體地址,那麼就需要逐字元的比較2個字串的變數,才能確認它們是否相等。由於逐字比較會花費大量的時間,降低效能。所以.NET提供了String.Equals方法來優化比較過程該方法能自動地完成引用比較和值比較。
string str1="abc";
string str2="abc";
string str3=String.Copy(str2);
string str4="abc";
Console.WriteLine(String.Equals(str1,str2)); //true;
Console.WriteLine(str1.Equals(str3)); //true;
Console.WriteLine(str1 == str3); //true;
Console.WriteLine(str1 == str4); //false;
其實“==”操作符,它實際上在底層是呼叫Equals方法,這是完成比較的一種簡捷方式。雖然Equals方法已經滿足了大多數的比較的需要,但是此方法沒有過載方法,不支援區分大小寫,和考慮每個國家的文化因素
-
2:String.Compare是一個比較靈活的比較方法,由於考慮到大小寫或文化因素,就可以使用此方法。因為它有許多過載的形式,可以接受大小寫或文化的引數,也支援子串比較。
語法如下;
int Compare(string str1,string str2);//指定要比較的字串;
Compare(string str1,string str2,bool IgnoreCase);//bool IgnoreCase預設為false,如果是true,則不區分大小寫的比較。
Compare(string str1,string str2,bool IgnoreCase,CulureInfo ci);//CulureInfo ci,要使用的文化。
Compare(string str1,int index1,string str2,int index2,int len);//index1和index2分別表示str1和str2的起始位置。
Compare返回一個表示比較結果的整數值,兩個字元相同,則返回0;如果第一個字串小宇第二個字串,則返回小於0;如果第一個字串大於第二字串,返回值大於0;
int result;
string str1="ABC";
string str2="abc";
result=string.Compare(str1,str2);//返回1,因為A比a大;
result=string.Compare(str1.str2,false);//返回1,區分大小寫;
result=string.Compare(str1,str2,ture);//返回0,不區分大小寫;
在編寫程式是,要考慮的文化因素影響。.NET給各種文化的分別提供了一組準則,在執行Compare方法時,CLR會檢查相關文化,並使用相對應的準則。Compare方法提供了一個CultureInfo物件引數。
CultureInfo ci = new CultureInfo("cs-cz");
要明確的指定一個預設文化或者無文化資訊,CultureInfo類提供了2個成員屬性,CurrentCulture(當前執行緒相關文化)和InvariantCulure(忽略文化因素),可以作為引數傳遞給方法。這樣使得程式具有自描性,可以清楚的這些方法是否受到文化的影響。
-
3:String.CompareOrdinal是對嚴格基於字元的序數值完成比較。它其實是使用一種簡單的演算法來比較2個字串的Unicode值。如果第一個字串小於第二個字串,則返回小於0;如果是2個字串相等,返回0;如果第一個字串大於第二字串,則返回大於0的值。
string str1=“Abc”;
string str2=“abc”;
result=string.Compare(str1,str2,false,CultureInfo.InvariantCulture);//返回1,A比a大,不受文化影響。
result=string.CompareOrdinal(str1,str2);返回負數-20。因為CompareOrdinal比較的是底層的Unicode值。A(U+0041)小於a(U+0061),所以第一個字串小於第二個字串
相關文章
- Delphi中字串比較大小 VS Oracle-SQL中字串比較大小字串OracleSQL
- 字串大小寫轉換和字串的比較字串
- python字串比較大小Python字串
- JavaScript字串如何比較大小JavaScript字串
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- 16:忽略大小寫的字串比較字串
- C#移除字串中的不可見Unicode字元C#字串Unicode字元
- 字串比較字串
- 字串-簡單字串比較字串
- 比較字串和數字串字串
- C# 移除字串末尾指定字元C#字串字元
- JavaScript 字串indexOf()JavaScript字串Index
- JavaScript 字串 indexOf()JavaScript字串Index
- 比較字串和數字串(續)字串
- Java™ 教程(比較字串和字串的部分)Java字串
- PHP比較字串PHP字串
- JAVA字串比較Java字串
- shell 下的字串比較字串
- 掌握 Swift 的字串細節Swift字串
- 一個字串比較的題字串
- 字串比較的常用函式字串函式
- 一個比較複雜的多次拆分字串的儲存過程字串儲存過程
- 字串拼接運算比較字串
- LintCode 字串比較字串
- (字串雜湊表)找到字串中不重複出現字元的最長子串長度字串字元
- JS判斷字串是否包含某字串 indexOf()方法使用JS字串Index
- 對於過長字串的大小比對字串
- Java 字串比較、拼接問題Java字串
- Java字串建立方式比較Java字串
- JavaScript 字串連線效能比較JavaScript字串
- 演算法:比較含退格的字串演算法字串
- shell 給字串增加單引號,並移除字串中多餘的空格字串
- 通過shell來比較oracle和java中的字串使用OracleJava字串
- 透過shell來比較oracle和java中的字串使用OracleJava字串
- Pythondifflib字串比較指令碼Python字串指令碼
- shell比較兩個字串是否相等字串
- VC 中字串比較和查詢字串
- python3中怎麼比較字串是否相等Python字串