学的语言越多,就会特别容易造成语言的混乱,故此特地整理一部分的语言比较内容,希望可以给大家提供一些帮助。
本篇比较字符串:
字符串基本的方法有一下几种:取字符、长度、遍历、子串、查找、比较、修改(增删改)、大小写、去掉空白。下面就以上几个特性进行比较:
| 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));输出:34python: 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++还有rfind
string x = "123456789";
int i = x.find("43");
cout << i << ' ';
i = x.find('4');
cout << i << endl;输出:-1 3Java: 和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 1Java的是:compareTo,
String x="123456789";
System.out.print(x.compareTo("123456789"));
System.out.print(x.compareTo("223456789"));
System.out.println(x.compareTo("113456789"));输出:0 -1 1python的是: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
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输出:000456789
123456789
123456789
大小写
C++:无
Java:toUpperCase toLowerCase
String x="abcD";
System.out.println(x.toLowerCase());
System.out.println(x.toUpperCase());输出:abcd
ABCD
ABCD
python: lower upper
x="abcD"
print x.lower()
print x.upper()输出:abcd
ABCD
ABCD
startswith 和endswith:
C++:无(使用compare和substr实现)
Java:startsWith endsWith
String x="abcD";
System.out.println(x.startsWith("ab"));
System.out.println(x.endsWith("D"));输出:true
true
true
python: startswith endswith
x="abcD"
print x.startswith('a')
print x.endswith('D')输出:True
True
去掉前后空白:
C++:无
Java:trim()
python:strip lstrip rstrip

本文对比了C++、Java和Python三种语言中字符串的基本操作方法,包括取字符、长度获取、遍历、子串提取、查找、比较等功能,并提供了相应的代码示例。
3980

被折叠的 条评论
为什么被折叠?



