3.1 字符串处理

字符串处理

    字符串切片

${#var}:返回字符串变量var的长度

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${#var}
14

${var:offset}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 到 ${#var}-1 之间

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${var:4}    #跳过4个字符,取后面所有字符
efghijklmn

${var:offset:number}:返回字符串变量 var 中从第 offset 个字符后(不包括第 offset 个字符)的字符开始,长度为 number 的部分

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${var:4:5}   #跳过4个字符后,取5个字符
efghi

${var: -length}:取字符串的最右侧几个字符
注意:冒号后必须有一空白字符

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${var: -5}   #从后向前取5个字符
jklmn

${var:offset:-length}:从最左侧跳过 offset 字符,一直向右取到距离最右侧 lengh 个字符之前的内容

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${var:5:-2}   #去掉前5个和后2个字符后,取剩下的字符
fghijkl
${var: -length:-offset}:先从最右侧向左取到 length 个字符开始,再向右取到距离最右侧 offset 个字符之间的内容

注意:-length 前空格

[root@CentOS7 bin]# echo $var
abcdefghijklmn
[root@CentOS7 bin]# echo ${var: -5:-2}   #取后5个字符,去掉后2个,取剩下的字符
jkl

${var#*word}:自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word字符之间的所有字符
${var##*word}:同上,不同的是,删除的是字符串开头至最后一次由word指定的字符之间的所有内容

[root@CentOS7 bin]# var=abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var#*d}   #取从前面的一个d以后的字符
eabcdefghijklmn
[root@CentOS7 bin]# echo ${var##*d}   #取从前面开始最后一个d以后的字符
efghijklmn
${var%word*}:自右而左,查找var变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word字符之间的所有字符
${var%%word*}:同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符
[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var%d*}   #取从后向前第一个d之前的字符
abcdeabc
[root@CentOS7 bin]# echo ${var%%d*}   #取从后向前开始最后一个d之前的字符
abc

    字符串替换

${var/pattern/substr}:查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/cde/----}   #从前向后将第一次被cde匹配的字符替换为----
ab----abcdefghijklmn

${var//pattern/substr}: 查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var//cde/----}   #将所有被cde匹配的字符替换为----
ab----ab----fghijklmn

${var/#pattern/substr}:查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/#ab/123456}    #将以ab开头的行从前向后替换为123456,没被替换的保留
123456cdeabcdefghijklmn

${var/%pattern/substr}:查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/%mn/123456}    #将以mn结尾的行从后向前替换为123456,没被替换的保留
abcdeabcdefghijkl123456

    字符串删除

${var/pattern}:删除var所表示的字符串中第一次被pattern所匹配到的字符串

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/cde}
ababcdefghijklmn

${var//pattern}:删除var所表示的字符串中所有被pattern所匹配到的字符串

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var//cde}
ababfghijklmn

${var/#pattern}:删除var所表示的字符串中所有以pattern为行首所匹配到的字符串

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/#abc}
deabcdefghijklmn
${var/%pattern}:删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串
[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var/%lmn}
abcdeabcdefghijk

    字符串转换

${var^^}:把var中的所有小写字母转换为大写

[root@CentOS7 bin]# echo ${var}
abcdeabcdefghijklmn
[root@CentOS7 bin]# echo ${var^^}
ABCDEABCDEFGHIJKLMN
${var,,}:把var中的所有大写字母转换为小写
[root@CentOS7 bin]#⮀echo ${var}
ABCDEABCDEFGHIJKLMN
[root@CentOS7 bin]#⮀echo ${var,,}
abcdeabcdefghijklmn


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值