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

com.tencent.tinker.build.aapt.StringUtil Maven / Gradle / Ivy

Go to download

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk.

There is a newer version: 1.9.15.1
Show newest version
/*
 * Copyright 2014-present Facebook, 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.tencent.tinker.build.aapt;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class StringUtil {

    public static final  String BLANK                     = "";
    public static final  String SPACE                     = " ";
    public static final  String NULL                      = "null";
    public static final  String CRLF_STRING               = "\r\n";
    public static final  byte   CR                        = '\r';
    public static final  byte   LF                        = '\n';
    public static final  byte[] CRLF                      = {CR, LF};
    private static final String METCH_PATTERN_REGEX       = "[\\*]+";
    private static final String METCH_PATTERN             = Constant.Symbol.WILDCARD;
    private static final String METCH_PATTERN_REPLACEMENT = "[\\\\S|\\\\s]*";
    private static final String ZERO                      = "0";

    private StringUtil() {
    }

    /**
     * when string is null return blank,where the string is not null it return string.trim
     *
     * @param string
     * @return String
     */
    public static String trim(final String string) {
        String result = null;
        if (string == null) {
            result = BLANK;
        } else {
            result = string.trim();
        }
        return result;
    }

    /**
     * when string is null return blank string
     *
     * @param string
     * @return String
     */
    public static String nullToBlank(final String string) {
        return string == null ? BLANK : string;
    }

    /**
     * when string[] is null return blank array
     *
     * @param stringArray
     * @return String[]{} length==0
     */
    public static String[] nullToBlank(final String[] stringArray) {
        String[] result = stringArray;
        if (stringArray == null) {
            result = new String[]{};
        }
        return result;
    }

    /**
     * 

Checks if a String is whitespace, empty ("") or null.

*

*

     * StringUtils.isBlank(null)      = true
     * StringUtils.isBlank("")        = true
     * StringUtils.isBlank(" ")       = true
     * StringUtils.isBlank("bob")     = false
     * StringUtils.isBlank("  bob  ") = false
     * 
* * @param string the String to check, may be null * @return true if the String is null, empty or whitespace */ public static boolean isBlank(final String string) { boolean result = false; int strLen; if (string == null || (strLen = string.length()) == 0) { result = true; } else { for (int i = 0; i < strLen; i++) { if (!Character.isWhitespace(string.charAt(i))) { result = false; break; } } } return result; } /** *

* Checks if a String is not empty (""), not null and not whitespace only. *

*

*

     * StringUtils.isNotBlank(null)      = false
     * StringUtils.isNotBlank("")        = false
     * StringUtils.isNotBlank(" ")       = false
     * StringUtils.isNotBlank("bob")     = true
     * StringUtils.isNotBlank("  bob  ") = true
     * 
* * @param string the String to check, may be null * @return true if the String is not empty and not null and * not whitespace */ public static boolean isNotBlank(final String string) { return !isBlank(string); } /** * compare stringArray1 and stringArray2 return the different in str1 * * @param stringArray1 * @param stringArray2 * @return String[] */ public static String[] compareString(final String[] stringArray1, final String[] stringArray2) { String[] differentString = null; if (stringArray1 != null && stringArray2 != null) { List list = new ArrayList(); for (int i = 0; i < stringArray1.length; i++) { boolean sign = false; for (int j = 0; j < stringArray2.length; j++) { if (stringArray1[i].equals(stringArray2[j])) { sign = true; break; } } if (!sign) { list.add(stringArray1[i]); } } differentString = new String[list.size()]; differentString = list.toArray(differentString); } return differentString; } /** *

Method:only for '*' match pattern,return true of false

* * @param string * @param patternString * @return boolean */ public static boolean isMatchPattern(final String string, final String patternString) { boolean result = false; if (string != null && patternString != null) { if (patternString.indexOf(METCH_PATTERN) >= 0) { String matchPattern = Constant.Symbol.XOR + patternString.replaceAll(METCH_PATTERN_REGEX, METCH_PATTERN_REPLACEMENT) + Constant.Symbol.DOLLAR; result = isMatchRegex(string, matchPattern); } else { if (string.equals(patternString)) { result = true; } } } return result; } /** *

Method:only for regex

* * @param string * @param regex * @return boolean */ public static boolean isMatchRegex(final String string, final String regex) { boolean result = false; if (string != null && regex != null) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(string); result = matcher.find(); } return result; } /** *

Method:only for regex,parse regex group when regex include group

* * @param string * @param regex * @return List */ public static List parseRegexGroup(final String string, final String regex) { List groupList = null; if (string != null && regex != null) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(string); int groupCount = matcher.groupCount(); int count = 1; groupList = new ArrayList(); if (matcher.find()) { while (count <= groupCount) { groupList.add(matcher.group(count)); count++; } } } return groupList; } /** *

* Method: check the string match the regex or not and return the match * field value * like {xxxx} can find xxxx *

* * @param string * @param regex * @param firstRegex * @param firstRegexReplace * @param lastRegexStringLength like {xxxx},last regex string is "}" so last regex string length equals 1 * @return List */ public static List parseStringGroup(final String string, final String regex, final String firstRegex, final String firstRegexReplace, final int lastRegexStringLength) { List list = null; if (string != null) { list = new ArrayList(); int lastRegexLength = lastRegexStringLength < 0 ? 0 : lastRegexStringLength; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(string); String group = null; int start = 0; while (matcher.find(start)) { start = matcher.end(); group = matcher.group(); group = group.replaceFirst(firstRegex, firstRegexReplace); group = group.substring(0, group.length() - lastRegexLength); list.add(group); } } return list; } /** * byte to hex string * * @param byteArray * @return String */ public static String byteToHexString(byte[] byteArray) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < byteArray.length; i++) { int byteCode = byteArray[i] & 0xFF; if (byteCode < 0x10) { builder.append(0); } builder.append(Integer.toHexString(byteCode)); } return builder.toString(); } /** * hex string to byte * * @param source * @return byte */ public static byte[] hexStringToByte(final String source) { byte[] bytes = null; if (source != null) { bytes = new byte[source.length() / 2]; int i = 0; while (i < bytes.length) { bytes[i] = (byte) (Integer.parseInt(source.substring(i * 2, (i + 1) * 2), 16)); i++; } } return bytes; } /** * fill zero * * @param length * @return String */ public static String fillZero(int length) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < length; i++) { stringBuilder.append(ZERO); } return stringBuilder.toString(); } /** *

Method: string mod operator,return 0~(mod-1)

* * @param string * @param mod * @return int */ public static int stringMod(String string, int mod) { int hashCode = 0; if (string != null) { hashCode = string.hashCode(); if (hashCode < 0) { hashCode = Math.abs(hashCode); hashCode = hashCode < 0 ? 0 : hashCode; } } return hashCode % (mod > 0 ? mod : 1); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy