网站首页 > java教程 正文
字符串的截取
字符串的截取是实际应用中经常使用的技术,被截取的部分称为“子串”。Java中使用函数substr()获取子串,C#使用函数substring()获取子串。而Python由于内置了序列,可以通过前面介绍的索引、切片获取子串,也可以使用函数split()来获取。字符串也属于序列。
下面这段代码使用序列的索引获取子串:
# 使用索引截取子串
print('----------# 使用索引截取子串---------')
word = 'world'
print(word[4])
【代码说明】第4行代码,访问字符串第5个字符的值。输出结果为“d”。
【运行结果】
通过切片可以实现对字符串有规律的截取。切片的语法格式如下所示。
string[start : end : step]
【代码说明】其中string表示需要取子串的源字符串变量。[start:end:step]表示从string的第start个索引位置开始到第end个索引之间截取子串,截取的步长是step。即每次截取字符string[start+step],直到第end个索引。索引从0开始计数。
下面这段代码演示了使用切片截取子串的功能:
# 特殊切片截取子串
print('---------# 特殊切片截取子串----------')
str1 = 'hello world'
print(str1[0:3])
print(str1[::2])
print(str1[1::2])
str2 = 'ABCDEFG'
print(str2[:3])
print(str2[3:])
print(str2[::2])
print('-----------------------------------')
【代码说明】
第10行代码,截取字符串中第1个字符到第3个字符之间的部分。
第11行代码,[::2]切片省略了开始和结束字符。从字符串的第1个字符开始,以2为步长逐个截取字符。
第12行代码,切片中的数字1表示从字符串的第2个字符开始取字符,数字2表示以2为步长逐个截取字符。
【运行结果】
如果要同时截取多个子串,可以使用函数split()实现。函数split()的声明如下所示。?
split([char] [,num])
【代码说明】
参数char表示用于分割的字符,默认的分割字符是空格。
参数num表示分割的次数。如果num等于2,将把源字符串分割为3个子串。默认情况下,将根据字符char在字符串中出现的个数来分割子串。
函数的返回值是由子串组成的列表。
代码如下:
# 使用split()获取子串
print('-----------# 使用split()获取子串-----')
sentence = "Tom said: a,b,c,d."
print('使用空格获取子串:', sentence.split())
print('使用逗号获取子串:', sentence.split(','))
print('使用逗号获取3个子串:', sentence.split(',', 2))
sentence1 = 'Uzi tell us : he is king and said : A, B, C, D.'
print('使用空格获取子串:', sentence1.split())
print('使用逗号获取子串:', sentence1.split(','))
print('使用空格获取4个子串:', sentence1.split(' ',3))
print('-----------------------------------')
【代码说明】
第22行代码根据空格来获取子串。字符串sentence中有5个空格,将返回由6个子串组成的列表。
第23行代码根据逗号来获取子串。字符串sentence中有3个空格,将返回由4个子串组成的列表。
第24行代码根据逗号来分割字符串,并把字符串sentence分割为3个子串。
【运行结果】
字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。
?
# 字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。
print('字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。')
str3 = "a"
print(id(str3))
print(id(str3 + "b"))
print('-------------------------------------')
?
【代码说明】
第2行代码输出str1的内部标识。输出结果为“4337916312”。
第3行代码,进行字符串连接,新的字符串将获得新的标识。输出结果为“4337800168”。
【运行结果】
ALL:
运行结果ALL:
-------------------end--------------------
猜你喜欢
- 2024-10-01 Java中String类字符串拼接谁的效率最低
- 2024-10-01 100个Java工具类之2:字符串之多种个性化格式处理
- 2024-10-01 每天积累一点点(Java基础——》String类学习——one day)
- 2024-10-01 Java动态加载Jar实例解析(java动态加载类框架)
- 2024-10-01 Java中如何使用正则技术提取html中的任意内容
- 2024-10-01 Java String 常用方法,涵盖全部(java string的用法)
- 2024-10-01 在Java中将String转换为char(java string转换char)
- 2024-10-01 「JavaWeb基础」文件上传和下载(修订版)
- 2024-10-01 浅谈Java中字符串的初始化及字符串操作类
- 2024-10-01 MySql字符串拆分实现split功能(字段分割转列、转行)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)