All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alibaba.nacos.common.utils.ConvertUtils Maven / Gradle / Ivy

There is a newer version: 2.0.4.RELEASE
Show newest version
/*
 * Copyright 1999-2018 Alibaba Group Holding Ltd.
 *
 * 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.alibaba.nacos.common.utils;

/**
 * Value Convert Utils.
 *
 * @author liaochuntao
 */
public final class ConvertUtils {
    
    private static final String NULL_STR = "null";
    
    /**
     * Convert String value to int value if parameter value is legal. And it automatically defaults to 0 if parameter
     * value is null or blank str.
     *
     * @param val String value which need to be converted to int value.
     * @return Converted int value and its default value is 0.
     */
    public static int toInt(String val) {
        return toInt(val, 0);
    }
    
    /**
     * Convert String value to int value if parameter value is legal. And return default value if parameter value is
     * null or blank str.
     *
     * @param val          value
     * @param defaultValue default value
     * @return int value if input value is legal, otherwise default value
     */
    public static int toInt(String val, int defaultValue) {
        if (StringUtils.equalsIgnoreCase(val, NULL_STR)) {
            return defaultValue;
        }
        if (StringUtils.isBlank(val)) {
            return defaultValue;
        }
        try {
            return Integer.parseInt(val);
        } catch (NumberFormatException exception) {
            return defaultValue;
        }
    }
    
    /**
     * Convert Object value to long value if parameter value is legal.
     * And it automatically defaults to 0 if parameter value is null or other object.
     *
     * @param val object value
     * @return Converted long value and its default value is 0.
     */
    public static long toLong(Object val) {
        if (val instanceof Long) {
            return (Long) val;
        }
        return toLong(val.toString());
    }
    
    /**
     * Convert String value to long value if parameter value is legal. And it automatically defaults to 0 if parameter
     * value is null or blank str.
     *
     * @param val String value which need to be converted to int value.
     * @return Converted long value and its default value is 0.
     */
    public static long toLong(String val) {
        return toLong(val, 0L);
    }
    
    /**
     * Convert String value to long value if parameter value is legal. And return default value if parameter value is
     * null or blank str.
     *
     * @param val          value
     * @param defaultValue default value
     * @return long value if input value is legal, otherwise default value
     */
    public static long toLong(String val, long defaultValue) {
        if (StringUtils.isBlank(val)) {
            return defaultValue;
        }
        try {
            return Long.parseLong(val);
        } catch (NumberFormatException exception) {
            return defaultValue;
        }
    }
    
    /**
     * Convert String value to boolean value if parameter value is legal. And return default value if parameter value is
     * null or blank str.
     *
     * @param val          value
     * @param defaultValue default value
     * @return boolean value if input value is legal, otherwise default value
     */
    public static boolean toBoolean(String val, boolean defaultValue) {
        if (StringUtils.isBlank(val)) {
            return defaultValue;
        }
        try {
            return Boolean.parseBoolean(val);
        } catch (NumberFormatException exception) {
            return defaultValue;
        }
    }
    
    //   The following utility functions are extracted from org.apache.commons.lang3
    //   start
    
    /**
     * 

Converts a String to a boolean (optimised for performance).

* *

{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'} or {@code 'yes'} * (case insensitive) will return {@code true}. Otherwise, {@code false} is returned.

* *

This method performs 4 times faster (JDK1.4) than * {@code Boolean.valueOf(String)}. However, this method accepts 'on' and 'yes', 't', 'y' as true values. * *

     *   BooleanUtils.toBoolean(null)    = false
     *   BooleanUtils.toBoolean("true")  = true
     *   BooleanUtils.toBoolean("TRUE")  = true
     *   BooleanUtils.toBoolean("tRUe")  = true
     *   BooleanUtils.toBoolean("on")    = true
     *   BooleanUtils.toBoolean("yes")   = true
     *   BooleanUtils.toBoolean("false") = false
     *   BooleanUtils.toBoolean("x gti") = false
     *   BooleanUtils.toBooleanObject("y") = true
     *   BooleanUtils.toBooleanObject("n") = false
     *   BooleanUtils.toBooleanObject("t") = true
     *   BooleanUtils.toBooleanObject("f") = false
     * 
* * @param str the String to check * @return the boolean value of the string, {@code false} if no match or the String is null */ public static boolean toBoolean(final String str) { return Boolean.TRUE.equals(toBooleanObject(str)); } /** *

Converts a String to a Boolean.

* *

{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'} or {@code 'yes'} * (case insensitive) will return {@code true}. {@code 'false'}, {@code 'off'}, {@code 'n'}, {@code 'f'} or {@code * 'no'} (case insensitive) will return {@code false}. Otherwise, {@code null} is returned.

* *

NOTE: This returns null and will throw a NullPointerException if autoboxed to a boolean.

* *
     *   // N.B. case is not significant
     *   BooleanUtils.toBooleanObject(null)    = null
     *   BooleanUtils.toBooleanObject("true")  = Boolean.TRUE
     *   BooleanUtils.toBooleanObject("T")     = Boolean.TRUE // i.e. T[RUE]
     *   BooleanUtils.toBooleanObject("false") = Boolean.FALSE
     *   BooleanUtils.toBooleanObject("f")     = Boolean.FALSE // i.e. f[alse]
     *   BooleanUtils.toBooleanObject("No")    = Boolean.FALSE
     *   BooleanUtils.toBooleanObject("n")     = Boolean.FALSE // i.e. n[o]
     *   BooleanUtils.toBooleanObject("on")    = Boolean.TRUE
     *   BooleanUtils.toBooleanObject("ON")    = Boolean.TRUE
     *   BooleanUtils.toBooleanObject("off")   = Boolean.FALSE
     *   BooleanUtils.toBooleanObject("oFf")   = Boolean.FALSE
     *   BooleanUtils.toBooleanObject("yes")   = Boolean.TRUE
     *   BooleanUtils.toBooleanObject("Y")     = Boolean.TRUE // i.e. Y[ES]
     *   BooleanUtils.toBooleanObject("blue")  = null
     *   BooleanUtils.toBooleanObject("true ") = null // trailing space (too long)
     *   BooleanUtils.toBooleanObject("ono")   = null // does not match on or no
     * 
* * @param str the String to check; upper and lower case are treated as the same * @return the Boolean value of the string, {@code null} if no match or {@code null} input */ @SuppressWarnings("all") public static Boolean toBooleanObject(String str) { if (str == "true") { return Boolean.TRUE; } else if (str == null) { return null; } else { char ch0; char ch1; char ch2; char ch3; switch (str.length()) { case 1: ch0 = str.charAt(0); if (ch0 == 'y' || ch0 == 'Y' || ch0 == 't' || ch0 == 'T') { return Boolean.TRUE; } if (ch0 != 'n' && ch0 != 'N' && ch0 != 'f' && ch0 != 'F') { break; } return Boolean.FALSE; case 2: ch0 = str.charAt(0); ch1 = str.charAt(1); if ((ch0 == 'o' || ch0 == 'O') && (ch1 == 'n' || ch1 == 'N')) { return Boolean.TRUE; } if ((ch0 == 'n' || ch0 == 'N') && (ch1 == 'o' || ch1 == 'O')) { return Boolean.FALSE; } break; case 3: ch0 = str.charAt(0); ch1 = str.charAt(1); ch2 = str.charAt(2); if ((ch0 == 'y' || ch0 == 'Y') && (ch1 == 'e' || ch1 == 'E') && (ch2 == 's' || ch2 == 'S')) { return Boolean.TRUE; } if ((ch0 == 'o' || ch0 == 'O') && (ch1 == 'f' || ch1 == 'F') && (ch2 == 'f' || ch2 == 'F')) { return Boolean.FALSE; } break; case 4: ch0 = str.charAt(0); ch1 = str.charAt(1); ch2 = str.charAt(2); ch3 = str.charAt(3); if ((ch0 == 't' || ch0 == 'T') && (ch1 == 'r' || ch1 == 'R') && (ch2 == 'u' || ch2 == 'U') && ( ch3 == 'e' || ch3 == 'E')) { return Boolean.TRUE; } break; case 5: ch0 = str.charAt(0); ch1 = str.charAt(1); ch2 = str.charAt(2); ch3 = str.charAt(3); char ch4 = str.charAt(4); if ((ch0 == 'f' || ch0 == 'F') && (ch1 == 'a' || ch1 == 'A') && (ch2 == 'l' || ch2 == 'L') && ( ch3 == 's' || ch3 == 'S') && (ch4 == 'e' || ch4 == 'E')) { return Boolean.FALSE; } } return null; } } // end }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy