com.tencent.tinker.build.aapt.StringUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tinker-patch-lib Show documentation
Show all versions of tinker-patch-lib Show documentation
Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk.
/*
* 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