字符串处理

字符串长度(String Length)

${#string}
expr length $string
expr "$string" : '.*'

匹配的最小子串的长度(Length of Matching Substring at Beginning of String)

expr match "$string" '$substring'          # $substring is a regular expression
expr "$string" : '$substring'              # $substring is a regular expression

索引(Index)

expr index $string $substring              # 匹配的第一个子串在主串中的位置,String.indexOf(substring)

提取子串(Substring Extraction), $string是”*”或”@”,则表示参数列表

${string:position}                         # String.substring(position)

${string:position:length}                  # String.substring(position, position+length)

expr substr $string $position $length      # String.substring(position-1, position+length-1)
                                           # ugly, messy, get out, scram!

expr match "$string" '\($substring\)'      # matched substring at beginning of string 

expr "$string" : '\($substring\)'          # matched substring at beginning of string 

expr match "$string" '.*\($substring\)'    # matched substring at ending of string 
expr "$string" : '.*\($substring\)'        # matched substring at ending of string 

eg: stringZ="abc123ABC987"
expr match $stringZ '[a-z]*'           # 3
expr match $stringZ '\([a-z]*\)'       # abc

expr $stringZ : '[a-z0-9]*'            # 6
expr $stringZ : '\([a-z0-9]*\)'        # abc123

expr match $stringZ '.*\([A-Z]\+\)'    # C
expr $stringZ : '.*\([0-9]\{2\}\)'     # 87

删除子串(Substring Removal)

${string#substring}       # 删除最前面匹配$substring的最短的子串
${string##substring}      # 删除最前面匹配$substring的最长的子串
${string%substring}       # 删除最后面匹配$substring的最短的子串
${string%%substring}      # 删除最后面匹配$substring的最长的子串
  • # 掐头,键盘上 # 在 $ 左面
  • % 掐尾,键盘上 % 在 $ 右面
  • 单个最小匹配,两个最大匹配
eg: stringZ="abc123ABC987CBA321cba"
echo ${stringZ#a*C}                   # 987CBA321cba
echo ${stringZ##a*C}                  # BA321cba

echo ${stringZ%C*a}                   # abc123ABC987
echo ${stringZ%%C*a}                  # abc123AB

替换子串(Substring Replacement)

${string/substring/replacement}        # 把第一个匹配的$substring替换为$replacement
${string//substring/replacement}       # 把所有匹配的$substring替换为$replacement
${string/#substring/replacement}       # 如果主串开头匹配$substring则用$replacement替换它
${string/%substring/replacement}       # 如果主串结尾匹配$substring则用$replacement替换它

eg: stringZ="abc123ABC987CBA321cba"
echo ${stringZ/a/z}                  # zbc123ABC987CBA321cba
echo ${stringZ//B/_}                 # abc123A_C987C_A321cba
echo ${stringZ/#abc/xyz}             # xyz123ABC987CBA321cba
echo ${stringZ/%321[a-c]*/x}         # abc123ABC987CBAx

参数扩展:

${parameter-default}         # parameter没声明, 使用default
${parameter:-default}        # parameter没设置, 使用default

${parameter=default}         # parameter没声明, 把设为default
${parameter:=default}        # parameter没设置, 把它为default

${parameter+alt_value}       # parameter已声明, 使用alt_value, 否则使用null字符串.
${parameter:+alt_value}      # parameter已设置,使用alt_value, 否则使用null字符串.
eg:
echo ${username}                     # null
echo ${username-`whoami`}            # root

username=
echo ${username-`whoami`}            # null
echo ${username:-`whoami`}           # root

unset username
echo ${username=eli}                 # eli
echo $username                       # eli

username=
echo ${username=eli}                 # null
echo ${username:=eli}                # eli
echo $username                       # eli

unset username
echo ${username+nana}                # null

username=
echo ${username+jack}                # jack
echo ${username:+jack}               # null

username=micheal
echo ${username+jack}                # jack
echo ${username:+jack}               # jack
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值