开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情
为了更好完善解放双手系列.并在进行一键创建项目的过程中.对于特殊关键词,少不了对字符串的操作.下面我们一起来学习一下吧.
您能在这里看到啥
- 字符串
- 字符串操作
字符串
字符串可以使用单引号‘’,也可以使用双引号"",也可以不使用.如下所示
str=shell
str1="shell"
str2='shell'
下面记录三者的区别
- 单引号
- 被单引号包围的字符都会原样输出,就算是变量也会变成了字符失去其作用.
- 字符串不能出现在单引号中
- 双引号
- 如果双引号中包含了变量,使用
$去修饰变量.不然就只会输出变量字符串. - 字符串中可以出现双引号.需要转义.
- 如果双引号中包含了变量,使用
- 纯字符串
- 如果有变量,也会被解析.
- 字符串不能出现空格,否则空格后边的字符串会被当作其他变量.
相对来说,代码更直观.如下所示
st=shell
s1=hello$st
s2="hello\"$st\""
s3='hello $st'
echo "$s1"
echo "$s2"
echo "$s3"
输入结果如下所示:
从结果中,我们得到一个结果,被单引号包裹的变量,真的就会变成了字符串
字符串操作
-
字符串拼接
字符串拼接相对简单点.我这就简单举个例子.
a="hello" b="shell" s1=$a$b s2="$a$b" s3="$a tb $b" s4=$a" tb "$b s5="${a}and${b}" echo "$s1" echo "$s2" echo "$s3" echo "$s4" echo "$s5"输出结果如下所示:
-
字符串截取
截取算是使用比较频繁的操作.一般
-
指定位置截取
这种方式需要两个参数才可以完成.第一个:起始位置.第二个:截取长度.
-
从字符串左边开始
语法:
${a: start:length}含义:
a:被截取字符串start: 起始位置,从左边开始length:截取长度
eg:
a="shell" echo "${a: 2: 2}" 输出el echo "${a: 2}" #不设置长度,默认截取到字符串末尾 -
从字符串右边开始
语法:
${a: 0-start:length}含义:
a:被截取字符串0-start: 起始位置,从右边开始length:截取长度
eg:
a="shell" echo "${a: 0-2: 2}" 输出el echo "${a: 0-2}" #不设置长度,默认截取到字符串末尾
总结:
不论从哪里开始.截取的顺序都是从左向右.
-
-
指定字符串截取
相对👆的方式,这个只能从指定字符串截取到字符串尾.
-
截取右边字符串
- 使用
#号截取指定字符右边所有字符 语法:${a#*chars}**含义:a:被截取字符串chars:指定字符
eg:
a="shellhello" echo "${a#*l}" 输出`lhello`注意:以上写法只会匹配指定字符一个时,就停止.如果你想直到最后一个指定字符再结束.使用
##,${a##*chars} - 使用
-
截取左边字符串
- 使用
%可以截取指定字符左边所有字符. 语法:${a%chars*}**含义:a:被截取字符串chars:指定字符
eg:
a="shellhello" echo "${a%h*}" 输出`shell`注意:以上写法只会匹配指定字符一个时,就停止.如果你想直到最后一个指定字符再结束.使用
%%,${a%%chars*} - 使用
-
-
-
字符串分割
字符串分割:将字符串以特定的条件,切割成一个数组.
-
使用字符串分割
语法:
(${p//b/a})含义: 用a去替换p变量中所有b.
eg:
p="1,2,3,4,5,6" arr=("${p//,/ }") length=${#arr[@]} for ((i = 0; i < "$length"; i++)); do st=${arr[$i]} echo "$st" done执行结果如下所示:
-
配置分割符,使用IFS变量
IFS:
内部域分割符.这个相对来说比较复杂,这里我们就详细讲解了.直接举例说一下,回头我也会好好的学习一下IFS,然后在好好的分享一下.
eg:
p="1,2,3,4,5,6" OLD_IFS="$IFS" IFS="," array=("$p") IFS="$OLD_IFS" for var in "${array[@]}"; do echo "$var" done -
-
字符串替换
字符串替换:其实就是先查找到目标字符串,然后执行替换操作.
-
替换第一个
只替换匹配到的第一个目标字符.
语法:
${a/str1/str2}用法:
a="hello shell" echo "${a/he/HE}" 输出HEllo shell -
替换所有
替换所有匹配到的目标字符.
语法:
${a//str1/str2}用法:
a="hello shell" echo "${a//he/HE}" 输出HEllo sHEll -
替换开头一个
替换开头目标字符.
语法:
${a/#str1/str2}用法:
a="hello shell" echo "${a/#he/HE}" 输出HEllo shell -
替换结尾一个
替换结尾目标字符.
语法:
${a/%str1/str2}用法:
a="hello shell" echo "${a/%ll/LL}" 输出hello sheLL