📄 stringutil.java
字号:
if (str == null || str.length() < 1)
return hash;
String pairs[] = str2arr(str);
for (int i = 0; i < pairs.length; i++)
try {
int index = pairs[i].indexOf("=");
String key1 = decode(pairs[i].substring(0, index));
if (index == pairs[i].length() || index < 0)
hash.put(key1, "");
else
hash.put(key1, pairs[i].substring(index + 1));
} catch (Exception exception) {
}
return hash;
}
public static String getClassName(Class c) {
String long_name = c.getName();
return long_name.substring(long_name.lastIndexOf(".") + 1);
}
public static final String zeroPadString(String string, int length) {
if (string == null || string.length() > length) {
return string;
} else {
StringBuffer buf = new StringBuffer(length);
buf.append(zeroArray, 0, length - string.length()).append(string);
return buf.toString();
}
}
public static final String highlightWords2(String str, String words[]) {
String tmp = null;
try {
tmp = highlightWords(str, words,
"<font style='background-color:#ffff00'><b>", "</b></font>");
} catch (Exception exception) {
}
if (tmp == null)
return str;
else
return tmp;
}
public static final String highlightWords(String str, String words[]) {
String tmp = null;
try {
tmp = highlightWordsInHtml(str, words);
} catch (Exception exception) {
}
if (tmp == null)
return str;
else
return tmp;
}
private static final String highlightWordsInHtml(String string,
String words[]) throws Exception {
if (string == null || words == null)
return null;
char source[] = null;
StringBuffer sb = new StringBuffer(string);
for (int wk = 0; wk < words.length; wk++)
if (words[wk] != null) {
source = sb.toString().toCharArray();
sb.setLength(0);
int sourceOffset = 0;
int sourceCount = source.length;
char target[] = words[wk].toLowerCase().toCharArray();
int targetOffset = 0;
int targetCount = target.length;
int fromIndex = 0;
if (fromIndex < sourceCount && targetCount != 0) {
char first = target[targetOffset];
int i = sourceOffset + fromIndex;
int max = sourceOffset + (sourceCount - targetCount);
int sbPos = 0;
int tags1 = 0;
char c = '\0';
label0: do {
while (i <= max) {
c = source[i];
switch (c) {
case 60: // '<'
tags1++;
break;
case 62: // '>'
if (tags1 > 0)
tags1--;
break;
case 10: // '\n'
case 44: // ','
tags1 = 0;
break;
}
if (Character.toLowerCase(c) == first)
break;
i++;
}
if (i > max)
break;
if (tags1 != 0) {
i++;
continue;
}
int j = i + 1;
int end = (j + targetCount) - 1;
int k = targetOffset + 1;
while (j < end)
if (Character.toLowerCase(source[j++]) != target[k++]) {
i++;
continue label0;
}
int pos = i - sourceOffset;
sb.append(source, sbPos, pos - sbPos);
sb.append(startHighlight[wk % startHighlight.length]);
sb.append(source, pos, targetCount);
sb.append("</b></font>");
sbPos = pos + targetCount;
i += targetCount;
} while (true);
sb.append(source, sbPos, sourceCount - sbPos);
}
}
return sb.toString();
}
public static final String highlightWords(String string, String words[],
String startHighlight, String endHighlight) throws Exception {
if (string == null || words == null || startHighlight == null
|| endHighlight == null)
return null;
StringBuffer regexp = new StringBuffer();
for (int x = 0; x < words.length; x++) {
words[x] = perl5Util.substitute("s#([\\|\\/\\.])#\\\\$1#g",
words[x]);
if (regexp.length() > 0)
regexp.append("|");
regexp.append(words[x]);
}
startHighlight = perl5Util.substitute("s#\\/#\\\\/#g", startHighlight);
endHighlight = perl5Util.substitute("s#\\/#\\\\/#g", endHighlight);
regexp.insert(0, "s/(");
regexp.append(")/");
regexp.append(startHighlight);
regexp.append("$1");
regexp.append(endHighlight);
regexp.append("/igm");
return perl5Util.substitute(regexp.toString(), string);
}
public static final String replace(String line, String oldString,
String newString) {
if (line == null)
return null;
int i = 0;
if ((i = line.indexOf(oldString, i)) >= 0) {
char line2[] = line.toCharArray();
char newString2[] = newString.toCharArray();
int oLength = oldString.length();
StringBuffer buf = new StringBuffer(line2.length);
buf.append(line2, 0, i).append(newString2);
i += oLength;
int j;
for (j = i; (i = line.indexOf(oldString, i)) > 0; j = i) {
buf.append(line2, j, i - j).append(newString2);
i += oLength;
}
buf.append(line2, j, line2.length - j);
return buf.toString();
} else {
return line;
}
}
public static final String replaceIgnoreCase(String line, String oldString,
String newString) {
if (line == null)
return null;
String lcLine = line.toLowerCase();
String lcOldString = oldString.toLowerCase();
int i = 0;
if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {
char line2[] = line.toCharArray();
char newString2[] = newString.toCharArray();
int oLength = oldString.length();
StringBuffer buf = new StringBuffer(line2.length);
buf.append(line2, 0, i).append(newString2);
i += oLength;
int j;
for (j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i) {
buf.append(line2, j, i - j).append(newString2);
i += oLength;
}
buf.append(line2, j, line2.length - j);
return buf.toString();
} else {
return line;
}
}
public static final String replaceIgnoreCase(String line, String oldString,
String newString, int count[]) {
if (line == null)
return null;
String lcLine = line.toLowerCase();
String lcOldString = oldString.toLowerCase();
int i = 0;
if ((i = lcLine.indexOf(lcOldString, i)) >= 0) {
int counter = 0;
char line2[] = line.toCharArray();
char newString2[] = newString.toCharArray();
int oLength = oldString.length();
StringBuffer buf = new StringBuffer(line2.length);
buf.append(line2, 0, i).append(newString2);
i += oLength;
int j;
for (j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i) {
counter++;
buf.append(line2, j, i - j).append(newString2);
i += oLength;
}
buf.append(line2, j, line2.length - j);
count[0] = counter;
return buf.toString();
} else {
return line;
}
}
public static final String replace(String line, String oldString,
String newString, int count[]) {
if (line == null)
return null;
int i = 0;
if ((i = line.indexOf(oldString, i)) >= 0) {
int counter = 0;
counter++;
char line2[] = line.toCharArray();
char newString2[] = newString.toCharArray();
int oLength = oldString.length();
StringBuffer buf = new StringBuffer(line2.length);
buf.append(line2, 0, i).append(newString2);
i += oLength;
int j;
for (j = i; (i = line.indexOf(oldString, i)) > 0; j = i) {
counter++;
buf.append(line2, j, i - j).append(newString2);
i += oLength;
}
buf.append(line2, j, line2.length - j);
count[0] = counter;
return buf.toString();
} else {
return line;
}
}
public static String stringArrayToString(String string_array[],
String separator) {
return stringArrayToString(string_array, separator, 0);
}
public static String stringArrayToString(String string_array[],
String separator, int start_index) {
if (string_array == null)
return "" + null;
if (string_array.length == 0)
return "";
if (separator == null)
separator = "";
int length = string_array.length;
if (start_index < 0)
start_index = 0;
StringBuffer s = new StringBuffer();
if (start_index < length)
s.append(string_array[start_index]);
for (int i = start_index + 1; i < length; i++) {
s.append(separator);
if (string_array[i] != null)
s.append(string_array[i]);
}
return s.toString();
}
public static String[] stringToStringArray(String str, String separator) {
if (str == null || str.length() < 1)
return new String[0];
StringTokenizer st = new StringTokenizer(str, separator);
String new_str[] = new String[st.countTokens()];
int i = 0;
while (st.hasMoreTokens())
new_str[i++] = st.nextToken();
return new_str;
}
public static String intArrayToString(int int_array[], String separator) {
if (int_array == null)
return "" + null;
if (int_array.length == 0)
return "";
if (separator == null)
separator = "";
int length = int_array.length;
StringBuffer s = new StringBuffer();
if (length > 0)
s.append(int_array[0]);
for (int i = 1; i < length; i++) {
s.append(separator);
s.append(int_array[i]);
}
return s.toString();
}
public static int[] stringToIntArray(String str, String separator) {
if (str == null || str.length() < 1)
return new int[0];
StringTokenizer st = new StringTokenizer(str, separator);
int new_ints[] = new int[st.countTokens()];
int i = 0;
while (st.hasMoreTokens())
try {
new_ints[i] = Integer.parseInt(st.nextToken());
i++;
} catch (NumberFormatException numberformatexception) {
new_ints[i++] = -1;
}
return new_ints;
}
public static int getLength(String str) {
if (str == null)
return 0;
char chars[] = str.toCharArray();
int n = 0;
for (int i = 0; i < chars.length; i++)
if (Character.UnicodeBlock.of(chars[i]) == Character.UnicodeBlock.BASIC_LATIN)
n++;
else
n += 2;
return n;
}
public static final String randomString(int length) {
if (length < 1)
return null;
char randBuffer[] = new char[length];
for (int i = 0; i < randBuffer.length; i++)
randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];
return new String(randBuffer);
}
public static final int randomInt(int length) {
if (length < 1 && length > 9)
throw new ArithmeticException(
"the length of random int must be between 0 and 9");
int sum = 0;
int n = 1;
int r = 0;
for (int i = 1; i < length; i++) {
r = randGen.nextInt(10);
sum += r * n;
n *= 10;
}
r = 1 + randGen.nextInt(9);
sum += r * n;
return sum;
}
public static void main(String args[]) throws Exception {
System.err.println(isEmailAddress("jimmy.yee.wang@elong.com"));
}
public static int indexOfIgnoreCase(String body, String p) {
p = p.toLowerCase();
char source[] = body.toCharArray();
int sourceOffset = 0;
int sourceCount = source.length;
char target[] = p.toCharArray();
int targetOffset = 0;
int targetCount = target.length;
int fromIndex = 0;
if (fromIndex >= sourceCount)
return targetCount != 0 ? -1 : sourceCount;
if (fromIndex < 0)
fromIndex = 0;
if (targetCount == 0)
return fromIndex;
char first = target[targetOffset];
int i = sourceOffset + fromIndex;
int max = sourceOffset + (sourceCount - targetCount);
label0: do {
while (i <= max && Character.toLowerCase(source[i]) != first)
i++;
if (i > max)
return -1;
int j = i + 1;
int end = (j + targetCount) - 1;
int k = targetOffset + 1;
while (j < end)
if (Character.toLowerCase(source[j++]) != target[k++]) {
i++;
continue label0;
}
return i - sourceOffset;
} while (true);
}
public static final String escapeForXML(String string) {
if (string == null)
return null;
int i = 0;
int last = 0;
char input[] = string.toCharArray();
int len = input.length;
StringBuffer out = new StringBuffer((int) ((double) len * 1.3D));
for (; i < len; i++) {
char ch = input[i];
if (ch <= '>')
if (ch == '<') {
if (i > last)
out.append(input, last, i - last);
last = i + 1;
out.append(LT_ENCODE);
} else if (ch == '&') {
if (i > last)
out.append(input, last, i - last);
last = i + 1;
out.append(AMP_ENCODE);
} else if (ch == '"') {
if (i > last)
out.append(input, last, i - last);
last = i + 1;
out.append(QUOTE_ENCODE);
}
}
if (last == 0)
return string;
if (i > last)
out.append(input, last, i - last);
return out.toString();
}
public static String cutString(String str, int len) {
try {
byte bytes[] = str.getBytes(SYS_ENCODING);
if (bytes.length < len)
return str;
else
return new String(bytes, 0, len - 1, SYS_ENCODING);
} catch (Exception exception) {
return str.substring(0, Math.min(str.length(), len) - 1);
}
}
public static int getBytesLength(String str) {
try {
return str.getBytes(SYS_ENCODING).length;
} catch (Exception exception) {
return str.getBytes().length;
}
}
public static final String unescapeFromXML(String string) {
string = replace(string, "<", "<");
string = replace(string, ">", ">");
string = replace(string, """, "\"");
return replace(string, "&", "&");
}
public StringUtil() {
}
private static final char IllegalEmailChar[] = { ' ', ',', ';', '!', '#',
'$', '%', '^', '&', '*', '(', ')', '[', ']', '{', '}', ':', '"',
'\'', '?', '+', '=', '|', '\\' };
private static final String key = "4c3oRx51u";
private static final SecretKeySpec skeySpec = new SecretKeySpec(key
.getBytes(), "Blowfish");
public static final DateFormat SIMPLE_DATE_FORMATTER = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
public static final DateFormat DATE_FORMATTER = DateFormat
.getDateTimeInstance(1, 1);
public static final String SYS_ENCODING = "GBK";
public static final String DEFAULT_ENCODING = System.getProperty(
"file.encoding", "ISO-8859-1");
private static final char zeroArray[] = "0000000000000000".toCharArray();
public static final Blowfish cipher = new Blowfish(key);
private static boolean useJCE = false;
private static Perl5Util perl5Util = new Perl5Util();
static final String startHighlight[] = {
"<font style='background-color:#ffff00'><b>",
"<font style='background-color:#00ff00'><b>",
"<font style='background-color:#ff9999'><b>" };
static final String endHighlight = "</b></font>";
private static Random randGen = new Random();
private static char numbersAndLetters[] = ("0123456789abcdefghijklmnopqrstuvwxyz"
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
private static final char QUOTE_ENCODE[] = """.toCharArray();
private static final char AMP_ENCODE[] = "&".toCharArray();
private static final char LT_ENCODE[] = "<".toCharArray();
private static final char GT_ENCODE[] = ">".toCharArray();
static {
try {
if (useJCE) {
java.security.Provider sunJce = new SunJCE();
Security.addProvider(sunJce);
useJCE = true;
} else {
useJCE = false;
}
} catch (Exception ex) {
useJCE = false;
ex.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -