Here you can find the source of countMatches(final String str, final String sub)
public static int countMatches(final String str, final String sub)
//package com.java2s; /*/*from w ww.j a v a 2s . com*/ * @(#)$Id: StringUtils.java 3619 2008-03-26 07:23:03Z yui $ * * Copyright 2006-2008 Makoto YUI * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Contributors: * Makoto YUI - initial implementation */ public class Main { public static int countMatches(final String str, final String sub) { if (isEmpty(str) || isEmpty(sub)) { return 0; } int count = 0; int idx = 0; while ((idx = str.indexOf(sub, idx)) != -1) { count++; idx += sub.length(); } return count; } public static int countMatches(final String str, final char c) { if (isEmpty(str)) { return 0; } int count = 0; final int size = str.length(); for (int i = 0; i < size; i++) { if (str.charAt(i) == c) { count++; } } return count; } public static boolean isEmpty(final String str) { return (str == null || str.length() == 0); } public static int indexOf(final String str, final char ch, final int nth) { if (nth < 1) { throw new IllegalArgumentException("nth must be greater than 0: " + nth); } int startPos = 0; for (int i = 0; i < nth; i++) { startPos = str.indexOf(ch, startPos); if (startPos == -1) { return -1; } } return startPos; } }