C++、Java、python 字符串比较

学的语言越多,就会特别容易造成语言的混乱,故此特地整理一部分的语言比较内容,希望可以给大家提供一些帮助。

本篇比较字符串:

 字符串基本的方法有一下几种:取字符、长度、遍历、子串、查找、比较、修改(增删改)、大小写、去掉空白。下面就以上几个特性进行比较:

C++ Java python
取字符 [] [] []
长度lengthlength len
遍历iterator for i in str
子串substrsubstring[:]
查找find rfindindexOf lastIndexOffind rfind
比较comparecompareTocmp
修改replacereplace
大小写 toUpperCase toLowerCaseupper lower
去掉空白 trimstrip 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);
输出:34

Java: 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++还有rfind
string 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:类似函数是 find python 还有 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
输出:
000456789
123456789


大小写

C++:无
Java:toUpperCase toLowerCase
  
      String x="abcD";
      System.out.println(x.toLowerCase());
      System.out.println(x.toUpperCase());
输出:
abcd
ABCD

python: lower upper
x="abcD"
print x.lower()
print x.upper()
输出:
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

python: startswith endswith
x="abcD"
print x.startswith('a')
print x.endswith('D')
输出:
True
True

去掉前后空白:

C++:无
Java:trim()
python:strip lstrip rstrip






  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值