Here you can find the source of countMatches(CharSequence str, CharSequence sub)
Counts how many times the substring appears in the larger string.
Parameter | Description |
---|---|
str | the CharSequence to check, may be null |
sub | the substring to count, may be null |
public static int countMatches(CharSequence str, CharSequence sub)
//package com.java2s; /*/*w w w. ja v a 2 s.c om*/ * [The "BSD licence"] * Copyright (c) 2013-2015 Dandelion * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Dandelion nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ public class Main { /** * <p> * Counts how many times the substring appears in the larger string. * </p> * * <p> * A {@code null} or empty ("") String input returns {@code 0}. * </p> * * <pre> * StringUtils.countMatches(null, *) = 0 * StringUtils.countMatches("", *) = 0 * StringUtils.countMatches("abba", null) = 0 * StringUtils.countMatches("abba", "") = 0 * StringUtils.countMatches("abba", "a") = 2 * StringUtils.countMatches("abba", "ab") = 1 * StringUtils.countMatches("abba", "xxx") = 0 * </pre> * * @param str * the CharSequence to check, may be null * @param sub * the substring to count, may be null * @return the number of occurrences, 0 if either CharSequence is * {@code null} */ public static int countMatches(CharSequence str, CharSequence sub) { if ((str == null || str.length() == 0) || (sub == null || sub.length() == 0)) { return 0; } int count = 0; int idx = 0; while ((idx = indexOf(str, sub, idx)) != -1) { count++; idx += sub.length(); } return count; } /** * Used by the indexOf(CharSequence methods) as a green implementation of * indexOf. * * @param cs * the {@code CharSequence} to be processed * @param searchChar * the {@code CharSequence} to be searched for * @param start * the start index * @return the index where the search sequence was found */ public static int indexOf(CharSequence cs, CharSequence searchChar, int start) { return cs.toString().indexOf(searchChar.toString(), start); } }