Java String index of matched char from start

Description

Java String index of matched char from start


//package com.demo2s;

public class Main {
  public static void main(String[] argv) throws Exception {
    String str = "demo2s.com";
    char searchChar = 'a';
    System.out.println(indexOf(str, searchChar));
  }//  w w w.  j  av a 2  s.  c o  m

  /**
   * <p>
   * Finds the first index within a String, handling <code>null</code>. This
   * method uses {@link String#indexOf(int)}.
   * </p>
   *
   * <p>
   * A <code>null</code> or empty ("") String will return <code>-1</code>.
   * </p>
   *
   * <pre>
   * indexOf(null, *)         = -1
   * indexOf("", *)           = -1
   * indexOf("aabaabaa", 'a') = 0
   * indexOf("aabaabaa", 'b') = 2
   * </pre>
   *
   * @param str
   *          the String to check, may be null
   * @param searchChar
   *          the character to find
   * @return the first index of the search character, -1 if no match or
   *         <code>null</code> string input
   * @since 2.0
   */
  public static int indexOf(String str, char searchChar) {
    if (isEmpty(str)) {
      return -1;
    }
    return str.indexOf(searchChar);
  }

  /**
   * <p>
   * Finds the first index within a String from a start position, handling
   * <code>null</code>. This method uses {@link String#indexOf(int, int)}.
   * </p>
   *
   * <p>
   * A <code>null</code> or empty ("") String will return <code>-1</code>. A
   * negative start position is treated as zero. A start position greater than the
   * string length returns <code>-1</code>.
   * </p>
   *
   * <pre>
   * indexOf(null, *, *)          = -1
   * indexOf("", *, *)            = -1
   * indexOf("aabaabaa", 'b', 0)  = 2
   * indexOf("aabaabaa", 'b', 3)  = 5
   * indexOf("aabaabaa", 'b', 9)  = -1
   * indexOf("aabaabaa", 'b', -1) = 2
   * </pre>
   *
   * @param str
   *          the String to check, may be null
   * @param searchChar
   *          the character to find
   * @param startPos
   *          the start position, negative treated as zero
   * @return the first index of the search character, -1 if no match or
   *         <code>null</code> string input
   * @since 2.0
   */
  public static int indexOf(String str, char searchChar, int startPos) {
    if (isEmpty(str)) {
      return -1;
    }
    return str.indexOf(searchChar, startPos);
  }

  /**
   * <p>
   * Finds the first index within a String, handling <code>null</code>. This
   * method uses {@link String#indexOf(String)}.
   * </p>
   *
   * <p>
   * A <code>null</code> String will return <code>-1</code>.
   * </p>
   *
   * <pre>
   * indexOf(null, *)          = -1
   * indexOf(*, null)          = -1
   * indexOf("", "")           = 0
   * indexOf("aabaabaa", "a")  = 0
   * indexOf("aabaabaa", "b")  = 2
   * indexOf("aabaabaa", "ab") = 1
   * indexOf("aabaabaa", "")   = 0
   * </pre>
   *
   * @param str
   *          the String to check, may be null
   * @param searchStr
   *          the String to find, may be null
   * @return the first index of the search String, -1 if no match or
   *         <code>null</code> string input
   * @since 2.0
   */
  public static int indexOf(String str, String searchStr) {
    if (str == null || searchStr == null) {
      return -1;
    }
    return str.indexOf(searchStr);
  }

  /**
   * <p>
   * Finds the first index within a String, handling <code>null</code>. This
   * method uses {@link String#indexOf(String, int)}.
   * </p>
   *
   * <p>
   * A <code>null</code> String will return <code>-1</code>. A negative start
   * position is treated as zero. An empty ("") search String always matches. A
   * start position greater than the string length only matches an empty search
   * String.
   * </p>
   *
   * <pre>
   * indexOf(null, *, *)          = -1
   * indexOf(*, null, *)          = -1
   * indexOf("", "", 0)           = 0
   * indexOf("aabaabaa", "a", 0)  = 0
   * indexOf("aabaabaa", "b", 0)  = 2
   * indexOf("aabaabaa", "ab", 0) = 1
   * indexOf("aabaabaa", "b", 3)  = 5
   * indexOf("aabaabaa", "b", 9)  = -1
   * indexOf("aabaabaa", "b", -1) = 2
   * indexOf("aabaabaa", "", 2)   = 2
   * indexOf("abc", "", 9)        = 3
   * </pre>
   *
   * @param str
   *          the String to check, may be null
   * @param searchStr
   *          the String to find, may be null
   * @param startPos
   *          the start position, negative treated as zero
   * @return the first index of the search String, -1 if no match or
   *         <code>null</code> string input
   * @since 2.0
   */
  public static int indexOf(String str, String searchStr, int startPos) {
    if (str == null || searchStr == null) {
      return -1;
    }
    // JDK1.2/JDK1.3 have a bug, when startPos > str.length for "", hence
    if (searchStr.length() == 0 && startPos >= str.length()) {
      return str.length();
    }
    return str.indexOf(searchStr, startPos);
  }

  /**
   * <p>
   * Checks if a String is empty ("") or null.
   * </p>
   *
   * <pre>
   * isEmpty(null)      = true
   * isEmpty("")        = true
   * isEmpty(" ")       = false
   * isEmpty("bob")     = false
   * isEmpty("  bob  ") = false
   * </pre>
   *
   *
   * @param str
   *          the String to check, may be null
   * @return <code>true</code> if the String is empty or null
   */
  public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
  }

}

/*
 * 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.
 */



PreviousNext

Related