引言
上文我们已经讲了字符串的比较,接下来我们再来学习一下字符串的替换、截断等处理操作。
字符串替换
1. 匹配串只替换一次
stra="aabbcc123"
strb=${stra/b/s}
- 第一个斜杠后的表示要匹配的模式串,第二个斜杠之后表示要替换后的新串
- strb的结果为aasbcc123
2. 匹配串全部替换
stra="aabbcc123"
strb=${stra//b/s}
- 双斜杠表示替换全部匹配,替换后的结果为aasscc123
3. 替换以某个串开头的字符串
stra="aabbcc123"
strb=${stra/#aa/sss}
- /#表示匹配以什么开头,替换后的结果为sssbbcc123
4. 替换以某个串结尾的字符串
stra="aabbcc123"
strb=${stra/%123/sss}
- /%表示以什么结尾,替换后的结果为aabbccsss
字符串截断
1. 指定范围截断
stra="ab.cde.fg"
strb=${stra: 3: 2}
-
字符串起始下标位置为0,3表示从下标3开始截取,2表示截取长度为2,如果超出则截取到末尾
-
截取结果为cd
strb=${stra: 3:}
-
省略截取范围,表示从截取位置开始到末尾
-
截取结果为cde.fg
2. 指定字符截断
2.1 截取指定字符右边的子串
stra="ab.cdcde.fg"
strb=${stra#*cd}
-
#表示截取操作,*是通配符,*cd表示第一次遇到cd字符就截断
-
截断结果为cde.fg
stra="ab.cdcde.fg"
strb=${stra##*cd}
-
##表示最后一次匹配到cd字符才会截断
-
截断结果为e.fg
2.2 截取指定字符左边的字串
stra="ab.cdcde.fg"
strb=${stra%cd*}
-
%表示截取操作,*是通配符,表示从右到左第一次匹配到cd字符就截断
-
截断结果为ab.cd
stra="ab.cdcde.fg"
strb=${stra%%cd*}
-
%%功能同##
-
截断结果为ab.