查找匹配字符串(Java方法总结)

2018-10-06  本文已影响0人  丑小丫_91b3

总结三种方法,之后想把各种算法也总结一下,毕竟笔试中总会遇到。。。。。。

一:IndexOf

用法:

int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 

int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 

int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 

int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。

思想:通过返回索引值的个数(非-1)判断有多少个匹配的子串,每次从匹配到的位置再次进行查找

通过IndexOf

二:正则表达

用法:

        这里用到的是Pattern 和 Matcher ,pattern是一个编译好的正则表达式,而Mather是一个正则表达式适配器,Mather的功能很强大,所以我们一般用pattern 来获取一个Matcher对象,然后用Matcher来操作正则表达式。

思想:编译子串,创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配

通过正则表达式

三:Split

用法:

split() 方法根据匹配给定的正则表达式来拆分字符串。

思想:将分离的字符串放到一个数组中,数组的长度-1为子串在父串中的匹配个数。

通过split

整体代码:

package StringMatch;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/*

* Find the child's count from parent

* @author Amma

*/

public class Main {

//IndexOf

    public void ThroughIndexOf(String parent,String child){

int count=0;

int StartIndex=0;

while(parent.indexOf(child,StartIndex)!=-1){

StartIndex = parent.indexOf(child,StartIndex);

StartIndex+=child.length();

count++;

}

System.out.print("The number of matches is:"+count+"\n");

}

//Match

    public void ThroughMatch(String parent,String child){

int count=0;

//Compile takes substrings as parameters

        Pattern p=Pattern.compile(child);

//Matcher receives the parent string as a parameter

        Matcher m=p.matcher(parent);

while(m.find()){

count++;

}

System.out.print("The number of matches is:"+count+"\n");

}

//Split

public void ThroughSplit(String parent,String child){

int count=0;

String[] array=parent.split(child);

count=array.length-1;

System.out.print("The number of matches is:"+count);

}

public static void main(String[] args) {

String P="Amma is my name,I love my family,I love my country!";

String C="my";

Main main=new Main();

System.out.print("****** The result of IndexOf ******"+"\n");

main.ThroughIndexOf(P,C);

System.out.print("****** The result of Match ******"+"\n");

main.ThroughMatch(P,C);

System.out.print("****** The result of Split ******"+"\n");

main.ThroughSplit(P,C);

}

}

上一篇下一篇

猜你喜欢

热点阅读