parse Int and return default value if failed - Java java.lang

Java examples for java.lang:String Parse

Description

parse Int and return default value if failed

Demo Code

/**/* ww w  .  j  a v  a 2 s. co m*/
 *      Copyright (C) 2008 10gen Inc.
 *  
 *   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.
 */
//package com.java2s;

public class Main {
    public static void main(String[] argv) {
        String s = "java2s.com";
        int def = 42;
        System.out.println(parseIfInt(s, def));
    }

    public static int parseIfInt(String s, int def) {
        if (s == null || s.length() == 0)
            return def;

        s = s.trim();

        for (int i = 0; i < s.length(); i++)
            if (!Character.isDigit(s.charAt(i)))
                return def;

        return Integer.parseInt(s);
    }

    /** Turns a string into an int and returns a default value if unsuccessful.
     * @param s the string to convert
     * @param def the default value
     * @return the int value
     */
    public static int parseInt(String s, int def) {
        return parseInt(s, def, null, true);
    }

    /** Turns a string into an int and returns a default value if unsuccessful.
     * @param s the string to convert
     * @param def the default value
     * @param lastIdx sets lastIdx[0] to the index of the last digit
     * @param allowNegative if negative numbers are valid
     * @return the int value
     */
    public static int parseInt(String s, int def, final int[] lastIdx,
            final boolean allowNegative) {
        final boolean useLastIdx = lastIdx != null && lastIdx.length > 0;
        if (useLastIdx)
            lastIdx[0] = -1;

        if (s == null)
            return def;

        s = s.trim();
        if (s.length() == 0)
            return def;

        int firstDigit = -1;
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                firstDigit = i;
                break;
            }
        }

        if (firstDigit < 0)
            return def;

        int lastDigit = firstDigit + 1;
        while (lastDigit < s.length()
                && Character.isDigit(s.charAt(lastDigit)))
            lastDigit++;

        if (allowNegative && firstDigit > 0
                && s.charAt(firstDigit - 1) == '-')
            firstDigit--;

        if (useLastIdx)
            lastIdx[0] = lastDigit;
        return Integer.parseInt(s.substring(firstDigit, lastDigit));
    }
}

Related Tutorials