字符串查找

来源:互联网 发布:君知物语 编辑:程序博客网 时间:2024/05/08 09:29

字符串查找
Java中在字符串中查找子串的方法有以下几种
1. 利用方法 indexof()
indexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引。
indexOf(String str,
int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。将最右边的空字符串 “” 视为出现在索引值 this.length() 处。
lastIndexOf(String str,
int fromIndex)
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索.
2. 利用split()方法分割字符串,查找子串,并且指出子串位置。
split(String regex,
int limit)
根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
将字符串发给之后,遍历各个数组,将存储需要查找指定字符串之前的数组长度相加,就是需要查找子串的位置。

public class TextSearch {    public static void main(String[] args) {        System.out.println("请输入字符串:");          Scanner Sca =new Scanner(System.in);         String str=Sca.next();         System.out.println(str);            System.out.println("请输入要查找的字符:");          String str2=Sca.next();         StringSearch search=new StringSearch();        System.out.println("位置是:"+getIndex(str, str2, 1));    }    public static int getIndex(String str, String c, int times) {        int index = 0;        String[] arr = str.split(c);        int length = arr.length > times ? times : arr.length;        for (int i = 0; i < length; i++) {            index += arr[i].length();        }        return index + times - 1;    }}

区分:
Split()方法的参数是正则的,而indexof()方法的参数是字符串。
Indexof()方法接收的参数是字符串,在用这个函数时,只需要考虑,它在字符串里面是否是特殊字符,不是得话,直接用双引号引用就行。
如果在split()方法里的话,除了要考虑是否为字符串,还要考虑在正则里面是否是特殊字符串。

0 0
原创粉丝点击