Bash字符串处理(与Java对照) - 19.查找字符的位置
来源:互联网 发布:知乎账号 编辑:程序博客网 时间:2024/04/24 00:03
From: http://codingstandards.iteye.com/blog/1198917
In Java
String.indexOf & String.lastIndexOf
int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。
int lastIndexOf(int ch)
返回最后一次出现的指定字符在此字符串中的索引。
int lastIndexOf(int ch, int fromIndex)
从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符在此字符串中的索引。
StringUtils.indexOf & StringUtils.indexOfAny & StringUtils.indexOfIgnoreCase & StringUtils.lastIndexOf
在 org.apache.commons.lang.StringUtils 中提供了很多查找字符索引的方法,包括正向和反向。
static int indexOf(String str, char searchChar)
Finds the first index within a String, handling null.
static int indexOf(String str, char searchChar, int startPos)
Finds the first index within a String from a start position, handling null.
static int lastIndexOf(String str, char searchChar)
Finds the last index within a String, handling null.
static int lastIndexOf(String str, char searchChar, int startPos)
Finds the last index within a String from a start position, handling null.
在 org.apache.commons.lang.StringUtils 中还提供了查找任意字符出现的位置的方法。
static int indexOfAny(String str, char[] searchChars)
Search a String to find the first index of any character in the given set of characters.
static int indexOfAny(String str, String searchChars)
Search a String to find the first index of any character in the given set of characters.
static int indexOfAnyBut(String str, char[] searchChars)
Search a String to find the first index of any character not in the given set of characters.
static int indexOfAnyBut(String str, String searchChars)
Search a String to find the first index of any character not in the given set of characters.
In Bash
使用遍历字符的方式来查找字符的位置
函数:strchr <str> <ch>
如果找到,打印字符的位置,从0开始计数,退出码为0;否则打印-1,退出码为1
- strchr(){
- local i
- for ((i=0; i<${#1}; ++i))
- do
- if [ "${1:i:1}" == "$2" ]; then
- echo $i
- return 0
- fi
- done
- echo -1
- return 1
- }
[root@web ~]# STR=123456789
[root@web ~]# CH=6
[root@web ~]# strchr "$STR" "$CH"
5
[root@web ~]# echo $?
0
[root@web ~]# CH=a
[root@web ~]# strchr "$STR" "$CH"
-1
[root@web ~]# echo $?
1
[root@web ~]#
用expr index来查找字符的位置
格式:expr index "$STR" "$CHARS"
在STR中查找CHARS中的任何字符(而不是子串),打印第一个位置。
注意:返回的下标是从1开始的,0表示没有找到。
不完全对应于Java的indexOf方法。倒是与C++ STL string的find_first_of相似。
index in STRING where any CHARS is found, or 0
[root@jfht ~]# STR="Hello World"
[root@jfht ~]# SUB="l"
[root@jfht ~]# expr index "$STR" "$SUB"
3
[root@jfht ~]# SUB="not found" # 注意,expr index并不能用能查找子串的位置,而是该字符串中任何字符首次出现的位置
[root@jfht ~]# expr index "$STR" "$SUB"
5
用awk index来查找字符出现的位置
格式1:awk -v "STR=$STR" -v "CH=$CH" '{print index(STR,CH)}' <<<""
格式2:echo | awk -v "STR=$STR" -v "CH=$CH" '{print index(STR,CH)}'
因为awk默认会从标准输入读取数据,所以必须进行输入的重定向。
此方法不仅可以查询字符的出现位置,也可以查询子串的出现位置。但不能查找任意字符的出现位置。
注意:索引位置从1开始计数,0表示没有找到。
implies that character indices start at one.)
[root@web ~]# STR=123456789
[root@web ~]# CH=6
[root@web ~]# awk -v "STR=$STR" -v "CH=$CH" '{print index(STR,CH)}' <<<""
6
[root@web ~]# echo | awk -v "STR=$STR" -v "CH=$CH" '{print index(STR,CH)}'
6
[root@web ~]#
- Bash字符串处理(与Java对照) - 19.查找字符的位置
- Bash字符串处理(与Java对照) - 20.查找子串的位置
- Bash字符串处理(与Java对照)
- Bash字符串处理(与Java对照)
- Bash字符串处理(与Java对照) - 18.格式化字符串
- Bash字符串处理(与Java对照) - 17.判断是否以另外的字符串结尾
- Bash字符串处理(与Java对照) - 6.判断字符串是否为空(不为空)
- 字符串处理笔记-查找指定字符在字符串中的位置
- android 查找字符在字符串的位置
- 查找字符串中指定字符的位置
- 查找字符串中指定字符的位置:
- 查找某个字符在一个字符串中的位置,假设字符串中的字符是有序的,如“adfgikmnprs”中查找g的位置。(折半查找)
- 字符串处理函数对照表[宽字符处理与ANSI字符处理]
- 查找字符的位置
- 标准的ANSI C字符串函数和它们的等价Unicode函数 字符串处理函数对照表[宽字符处理与ANSI字符处理]
- 一个字符串中查找另一个字符出现的全部索引位置(JAVA)
- [java practices]查找字符串出现的位置
- java 查找字符串所在的位置
- Linux 如何用vim命令把编辑文件的几行内容拷贝到一个新文件
- 解决IE6下无法显示png图片问题
- 如何查看类对象数组中类成员变量的全部值,类成员变量也是数组。
- MacOS上port命令使用方法
- Bash字符串处理(与Java对照) - 18.格式化字符串
- Bash字符串处理(与Java对照) - 19.查找字符的位置
- GCC编译参数描述
- 摄影
- C#编程中的66个好习惯
- 利用c#制作简单的留言板
- 关于更改linux下系统资源限制:ulimit
- 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)
- Fedora8 安装VMware Tools全过程图解
- Java线程池