计算字串出现关键字次数和所在位置

来源:互联网 发布:r语言数据分类 编辑:程序博客网 时间:2024/06/06 00:39
import java.util.Iterator;import java.util.List;import java.util.ArrayList;public class CalStringOccurrence {public static int calOccurences(final String input,final String searchWord){int occurrences = 0,index = 0;if (input == null || searchWord == null)return occurrences;while((index = input.indexOf(searchWord,index))>=0){occurrences++;index+=searchWord.length();}return occurrences;}public static List<Integer> calIndexes(final String input,final String searchWord){List<Integer> indexes = null;if (input == null || searchWord == null)return null;indexes = new ArrayList<Integer>();int index = 0;while((index = input.indexOf(searchWord,index))>=0){indexes.add(new Integer(index));index+=searchWord.length();}return indexes;}private static boolean test_calIndexes(final String input,final String word){List<Integer> indexes = CalStringOccurrence.calIndexes(input,word);if (indexes == null)   return true;for(Iterator<Integer> it = indexes.iterator();it.hasNext();){int index = it.next().intValue();if(!input.substring(index, index+word.length()).equals(word)){return false;}}return true;}/** * @param args */public static void main(String[] args) {String input = "California’s Congressional delegation, " +"the largest and most influential in the nation, is undergoing a major upheaval," +" the result of reapportionment and retirements, threatening the state’s influence " +"in Washington next year and forcing members to scramble to withstand what is emerging " +"as a generational wave";String key = "the";System.out.println(CalStringOccurrence.calOccurences(input,key));System.out.println(CalStringOccurrence.calIndexes(input,key));System.out.println(CalStringOccurrence.test_calIndexes(input,key));}}


原创粉丝点击