字符串处理-${#},expr length,expr index,expr match,抽取子串

######${#} ,  expr length "$str"
[[email protected] shell]# str="my name is MAH"
[[email protected] shell]# echo ${#str}
14
[[email protected] shell]# expr length $str
expr: syntax error
[[email protected] shell]# expr length "$str"     #必须要加双引号
14

########expr index "$str" MAH
[[email protected] shell]# str="my name is MAH"
[[email protected] shell]# expr index "$str" MAH
12
[[email protected] shell]# expr index "$str" o    #没有出现,返回0
0
[[email protected] shell]# expr index "$str" Ay    #尽管Ay都存在,但是返回的是y的位置
2
[[email protected] shell]# expr index "$str" an
4

######expr match $string  $substring

在string的开头,匹配substring字符串,返回匹配的字符串的长度

[[email protected] shell]# str="my name is MAH"
[[email protected] shell]# expr match "$str" my*
2
[[email protected] shell]# expr match "$str" MAH     #尽管字符串中包含MAH,但是MAH不在开头
0
[[email protected] shell]# expr match "$str" m*
1
[[email protected] shell]# expr match "$str" m.*     #正则表达式 .* 表示所有
14
####${str:position:length}
字符串剪裁,两种方式
[[email protected] shell]# str="abc def ghi"
[[email protected] shell]# echo ${str:0}
abc def ghi
[[email protected] shell]# echo ${str:0:3}    #0表示第一位,3表示长度
abc
[[email protected] shell]# echo ${str:0:5}
abc d
[[email protected] shell]# echo ${str:-3}    #-前面没有空格,显示所有字符串
abc def ghi
You have new mail in /var/spool/mail/root
[[email protected] shell]# echo $str
abc def ghi
[[email protected] shell]# echo ${str: -3}   #-前有空格,从右边剪裁
ghi
[[email protected] shell]# echo ${str: -6}
ef ghi
[[email protected] shell]# expr substr "$str" 1 3   #expr substr "$str"格式,首位是1号位,后面必须有两个参数
abc
[[email protected] shell]# expr substr "$str" 1 5
abc d

######字符串处理时,使用正则表达式,注意:冒号两边必须有空格,否则语法错误

剪裁字符串开头的子串:两种方式

[[email protected] shell]# str="012345 my name is mah"
[[email protected] shell]# expr match "$str" ‘\([0-9]*\)‘    #方式一,使用match
012345
[[email protected] shell]# expr "$str" : ‘\([0-9]*\)‘       #方式二,使用冒号
012345

剪裁字符串结尾的子串:也是两种方式区别是在\(前面添加.*

[[email protected] shell]# echo $str
012345 my name is mah
[[email protected] shell]# expr match "$str" ‘.*\(...\)‘   #.表示一个字符
mah
[[email protected] shell]# expr "$str" : ‘.*\(...\)‘
mah

######删除子串:格式一种:${}

第一类:从开头开始删除

[[email protected] shell]# echo $str
012345 my name is mah
[[email protected] shell]# echo ${str#0123}
45 my name is mah
[[email protected] shell]# echo ${str#345}
012345 my name is mah
[[email protected] shell]# echo ${str#0*5}   #这里*不是正则表达式,仅仅代表从0到5中所有字符
my name is mah
[[email protected] shell]# echo ${str##0*5}  #  ##贪婪模式
my name is mah

第二类:从结尾开始删除

[[email protected] shell]# echo ${str%mah}
012345 my name is
[[email protected] shell]# echo ${str%%m*h}
012345
[[email protected] shell]# echo ${str%%m.*h}   #由此可见,*不是正则表示式
012345 my name is mah

#######替换字符串

[[email protected] shell]# str="0011 my name is mah 0011 "
[[email protected]0 shell]# echo ${str/0*1/yyy}
yyy
[[email protected] shell]# echo ${str/0**/yyy}
yyy
[[email protected] shell]# echo ${str/0*0/yyy}  #*号不是正则表达式,但是表示的是所有的字符
yyy11
[[email protected] shell]# echo ${str//0*0/yyy}
yyy11
[[email protected] shell]# echo ${str/0*m/yyy}
yyyah 0011

另外两种特殊的替换

#1.从开头替换
[[email protected] shell]# echo ${str/#0011/MAH}
MAH my name is mah 0011

#2.从结尾替换
[[email protected] shell]# echo ${str}
0011 my name is mah 0011
[[email protected] shell]# echo ${str/%0011/MAH}
0011 my name is mah 0011

[[email protected] shell]# str="123 my name is mah"
[[email protected] shell]# echo ${str/%m*h/MAH}
123 MAH

字符串处理-${#},expr length,expr index,expr match,抽取子串

时间: 2024-10-20 04:15:58

字符串处理-${#},expr length,expr index,expr match,抽取子串的相关文章

oracle获取字符串长度函数length()和hengthb()

原文:oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算string所占的字符长度:返回字符串的长度,单位是字符 对于单字节字符,LENGTHB和LENGTH是一样的. 如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文. 注: 一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为

android listview Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

android listview 适配器在多种类型viewType报错: Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3 2 at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6822) 3 at android.widget.AbsListView.trackMotionScroll(AbsListView.j

ListView中使用type需要注意的东西 java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 addScrapView

ListView中使用type需要注意的东西 在使用ListView时,如果使用了getItemViewType, 记得他的值一定要是从0开始计数的. 且要覆盖getViewTypeCount方法.并且让getViewTypeCount>getItemViewType 否则会有数组越界异常: 10-21 20:18:16.231: E/AndroidRuntime(4475): java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

Java - 错误: "java.lang.ArrayIndexOutOfBoundsException: length=1; index=1"

错误: "java.lang.ArrayIndexOutOfBoundsException: length=1; index=1" 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24464947 Java中, 错误: "java.lang.ArrayIndexOutOfBoundsException: length=1; index=1" ; 意思: 数组(Array)索引(Index)越界(Ou

Android BaseAdapter加载多个不同的Item布局时出现UncaughtException in Thread main java.lang.ArrayIndexOutOfBoundsException: length=15; index=15

java.lang.ArrayIndexOutOfBoundsException: length=15; index=15 异常出现的场景:在做聊天界面时,需要插入表情,图片,文字,名片,还有几种较为复杂的布局.这时就需要用到BaseAdapter中的getViewTypeCount()和getItemViewType(int position) 方法了,在发送复杂界面时出现了这个异常. 令人抓狂的是这个异常居然是UncaughtException,根本无法判断哪一行出错了,刚开始的时候觉得一定

【Android】ListView ViewHolder ArrayIndexOutOfBoundsException: length=2; index=2

ViewHolder ArrayIndexOutOfBoundsException: length=2; index=2 http://stackoverflow.com/questions/28387892/viewholder-arrayindexoutofboundsexception-length-2-index-2 ListView Adapter的getItemViewType返回值要从0开始,坑啊!!!

poj 1226 hdu 1238 Substrings 求若干字符串正串及反串的最长公共子串 2002亚洲赛天津预选题

题目:http://poj.org/problem?id=1226 http://acm.hdu.edu.cn/showproblem.php?pid=1238 其实用hash+lcp可能也可以,甚至可能写起来更快,不过我没试,我最近在练习后缀数组,所以来练手 后缀数组的典型用法之一----------------后缀数组+lcp+二分 思路:1.首先将所有的字符串每读取一个,就将其反转,作为一组,假设其下标为i到j,那么cnt[i]到cnt[j]都标记为一个数字(这个数字意思是第几个读入的字符

面试题:数组有没有length()方法? 字符串有没有length()方法? 集合有没有length()方法?

数组求长度用length属性 字符串求长度用length()方法 集合求长度用size()方法 程序举例: package 集合.length_size; import java.util.ArrayList; import java.util.List; public class Length_Size { public static void main(String[] args) { String[] strings = {"aaa","bbb","

JQuery包装集size,length,index,slice,find,filter,is,children,next,nextAll,parent,parents,closest,siblings,add,end,andSelf的用法

在使用Jquery包装集的知识之前首先要注意三个概念(当前包装集.新包装集.包装集内部元素)的区别. 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <