C++、Java、python 字串比較
阿新 • • 發佈:2019-01-23
學的語言越多,就會特別容易造成語言的混亂,故此特地整理一部分的語言比較內容,希望可以給大家提供一些幫助。
本篇比較字串:
字串基本的方法有一下幾種:取字元、長度、遍歷、子串、查詢、比較、修改(增刪改)、大小寫、去掉空白。下面就以上幾個特性進行比較:
C++ | Java | python | |
取字元 | [] | [] | [] |
長度 | length | length | len |
遍歷 | iterator | for i in str | |
子串 | substr | substring | [:] |
查詢 | find rfind | indexOf lastIndexOf | find rfind |
比較 | compare | compareTo | cmp |
修改 | replace | replace | |
大小寫 | toUpperCase toLowerCase | upper lower | |
去掉空白 | trim | strip lstrip rstrip |
型別名:
C++:string Java: String python: str取字元:
C++: 取字元可以使用at( )函式或者[ ]來取得。 Java: 取字元可以使用charAt( )函式或者[ ]來取得。 python:取字元可以使用[ ] 結論: 最佳使用方式是[ ],因為好記嘛。長度:
C++: 使用string.size() 或者string.length() Java: 使用String.length()來獲得長度 python: 使用len(str)來獲得長度 結論: 推薦C++和Java使用length函式,python使用len遍歷:
C++ :for (string::const_iterator it = x.begin(); it != x.end(); it++)
{
cout << *it << ' ';
}
Java: 使用索引遍歷。 python:
for i in '123456789':
print i
子串:
C++:string.substr(int index,int length)string x = "123456789";
cout<<x.substr(2, 2);
輸出:34Java: String.substring(int index, int end)
String xString="123456789";
System.out.println(xString.substring(2,4));
輸出:34
python: str[int index:int end]
<span style="color: rgb(51, 0, 0);">x="123456789"
print x</span><span style="color:#ff0000;">[2:4]</span>
輸出:34查詢
C++:size_type string.find(char x,size_type pos=0) string.find(const *x,size_type pos=0) 從pos位置開始查詢字串或者某個字元,返回找到的位置,如果找不到返回-1.C++還有rfindstring x = "123456789";
int i = x.find("43");
cout << i << ' ';
i = x.find('4');
cout << i << endl;
輸出:-1 3
Java: 和C++相似方法是indexOf(),Java還有lastIndexOf()。 Java還有contains(String sub)和matches(String tregx)
String x="123456789";
System.out.print(x.indexOf("43"));
System.out.println(x.indexOf('4'));
輸出:-1 3 python:類似函式是findpython 還有 rfind
x="123456789"
print x.find('43'),x.find('4')
輸出: -1 3
實際python中還有另外一個函式是index,功能和find類似。但是index函式找不到的時候會返回exception,所以不建議使用。比較
C++的是:string.compare(const char*), string.compare(string),大於返回正數(1) 等於返回0 小於返回負數(-1)。string x = "123456789";
cout << x.compare("123456789") << ' ';
cout << x.compare("223456789") << ' ';
cout << x.compare("113456789") << endl;
輸出:0 -1 1
Java的是:compareTo,
String x="123456789";
System.out.print(x.compareTo("123456789"));
System.out.print(x.compareTo("223456789"));
System.out.println(x.compareTo("113456789"));
輸出:0 -1 1
python的是:cmp(str,str)
x="123456789"
print cmp(x,'123456789'),cmp(x,'223456789'),cmp(x,'113456789')
輸出: 0 -1 1
相等
C++: == Java:equals python: ==修改(增刪改)
修改操作完全可以通過+和子串來達成目的。 C++:嚴格說來C++沒有正式的字串替換函式,C++中的string類的replace函式,使用的是位置來作為引數進行替換的。replace(begin,end,new),該函式不建議使用,完全可以通過substr和+來實現,完全沒有必要記住這個函式。 Java:replace(old,new)。用新的字元(串),替換舊的字元(串) String x="123456789";
System.out.println(x.replace('1', '0'));
System.out.println(x.replace("23", "ab"));
System.out.println(x);
輸出結果是: 023456789
1ab456789
123456789
換句話說,該函式會返回替換後的字串副本,並不會改變原來的字串。(Java和python中的字串,無法修改,但是C++的可以) 實際上java中還存在,replaceAll(string regx,string new) replaceFirst(String regx,String new)這個函式 python:replace 類似於java的
x="123456789"
print x.replace("123","000")
print x
輸出:
000456789123456789
大小寫
C++:無 Java:toUpperCase toLowerCase
String x="abcD";
System.out.println(x.toLowerCase());
System.out.println(x.toUpperCase());
輸出:
abcdABCD
python: lower upper
x="abcD"
print x.lower()
print x.upper()
輸出:
abcdABCD
startswith 和endswith:
C++:無(使用compare和substr實現) Java:startsWith endsWith
String x="abcD";
System.out.println(x.startsWith("ab"));
System.out.println(x.endsWith("D"));
輸出:
truetrue python: startswith endswith
x="abcD"
print x.startswith('a')
print x.endswith('D')
輸出:
True
True