字符串的常用方法总结:
package cn.com.huawei.opensource.common.lang;
import java.io.*;
public class StringConverter {
public StringConverter() {
}
byte[] stringToFullByteArray(String s) {
int i = s.length();
byte abyte0[] = new byte[i * 2];
for (int j = 0; j < i; j++) {
char c = s.charAt(j);
abyte0[j * 2] = (byte) ((c & 0xff00) >>
;
abyte0[j * 2 + 1] = (byte) (c & 0xff);
}
return abyte0;
}
public static byte[] hexToByte(String s) throws IOException {
int i = s.length() / 2;
byte abyte0[] = new byte[i];
int j = 0;
if (s.length() % 2 != 0)
throw new IOException(
"hexadecimal string with odd number of characters");
for (int k = 0; k < i; k++) {
char c = s.charAt(j++);
int l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(c);<br> if (l == -1)<br> throw new IOException(<br> "hexadecimal string contains non hex character");<br> int i1 = (l & 0xf) << 4;<br> c = s.charAt(j++);<br> l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(c);<br> i1 += l & 0xf;<br> abyte0[k] = (byte) i1;<br> }<br><br> return abyte0;<br> }<br><br> public static String byteToHex(byte abyte0[]) {<br> int i = abyte0.length;<br> char ac[] = new char[i * 2];<br> int j = 0;<br> int k = 0;<br> for (; j < i; j++) {<br> int l = abyte0[j] & 0xff;<br> ac[k++] = HEXCHAR[l >> 4 & 0xf];<br> ac[k++] = HEXCHAR[l & 0xf];<br> }<br><br> return new String(ac);<br> }<br><br> public static int unicodeToAscii(OutputStream outputstream, String s,<br> boolean flag) throws IOException {<br> int i = 0;<br> if (s == null || s.length() == 0)<br> return 0;<br> int j = s.length();<br> for (int k = 0; k < j; k++) {<br> char c = s.charAt(k);<br> if (c == '\\') {<br> if (k < j - 1 && s.charAt(k + 1) == 'u') {<br> outputstream.write(c);<br> outputstream.write(117);<br> outputstream.write(48);<br> outputstream.write(48);<br> outputstream.write(53);<br> outputstream.write(99);<br> i += 6;<br> } else {<br> outputstream.write(c);<br> i++;<br> }<br> continue;<br> }<br> if (c >= ' ' && c <= '\177') {<br> outputstream.write(c);<br> i++;<br> if (c == '\'' && flag) {<br> outputstream.write(c);<br> i++;<br> }<br> } else {<br> outputstream.write(92);<br> outputstream.write(117);<br> outputstream.write(HEXCHAR[c >> 12 & 0xf]);<br> outputstream.write(HEXCHAR[c >> 8 & 0xf]);<br> outputstream.write(HEXCHAR[c >> 4 & 0xf]);<br> outputstream.write(HEXCHAR[c & 0xf]);<br> i += 6;<br> }<br> }<br><br> return i;<br> }<br><br> public static String asciiToUnicode(byte abyte0[], int i, int j) {<br> if (j == 0)<br> return "";<br> char ac[] = new char[j];<br> int k = 0;<br> for (int l = 0; l < j; l++) {<br> byte byte0 = abyte0[i + l];<br> if (byte0 == 92 && l < j - 5) {<br> byte byte1 = abyte0[i + l + 1];<br> if (byte1 == 117) {<br> l++;<br> int i1 = "0123456789abcdef01234567<wbr>89ABCDEF"<br> .indexOf(abyte0[i + ++l]) << 12;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]) << 8;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]) << 4;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]);<br> ac[k++] = (char) i1;<br> } else {<br> ac[k++] = (char) byte0;<br> }<br> } else {<br> ac[k++] = (char) byte0;<br> }<br> }<br><br> return new String(ac, 0, k);<br> }<br><br> public static String asciiToUnicode(String s) {<br> if (s == null || s.indexOf("\\u") == -1)<br> return s;<br> int i = s.length();<br> char ac[] = new char[i];<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c == '\\' && k < i - 5) {<br> char c1 = s.charAt(k + 1);<br> if (c1 == 'u') {<br> k++;<br> int l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 12;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 8;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 4;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k));<br> ac[j++] = (char) l;<br> } else {<br> ac[j++] = c;<br> }<br> } else {<br> ac[j++] = c;<br> }<br> }<br><br> return new String(ac, 0, j);<br> }<br><br> public static int writeUTF(String s, OutputStream outputstream)<br> throws IOException {<br> int i = s.length();<br> boolean flag = false;<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c >= '\001' && c <= '\177') {<br> outputstream.write(c);<br> j++;<br> continue;<br> }<br> if (c > '\u07FF') {<br> outputstream.write(0xe0 | c >> 12 & 0xf);<br> outputstream.write(0x80 | c >> 6 & 0x3f);<br> outputstream.write(0x80 | c >> 0 & 0x3f);<br> j += 3;<br> } else {<br> outputstream.write(0xc0 | c >> 6 & 0x1f);<br> outputstream.write(0x80 | c >> 0 & 0x3f);<br> j += 2;<br> }<br> }<br><br> return j;<br> }<br><br> public static int getUTFSize(String s) {<br> int i = s != null ? s.length() : 0;<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c >= '\001' && c <= '\177') {<br> j++;<br> continue;<br> }<br> if (c > '\u07FF')<br> j += 3;<br> else<br> j += 2;<br> }<br><br> return j;<br> }<br><br> public static String inputStreamToString(InputStream inputstream, int i)<br> throws IOException {<br> InputStreamReader inputstreamreader = new InputStreamReader(inputstream);<br> StringWriter stringwriter = new StringWriter();<br> char c = '\u2000';<br> char ac[] = new char[c];<br> int j = i;<br> do {<br> if (j <= 0)<br> break;<br> int k = inputstreamreader.read(ac, 0, j <= c ? j : ((int) (c)));<br> if (k == -1)<br> break;<br> stringwriter.write(ac, 0, k);<br> j -= k;<br> } while (true);<br> stringwriter.close();<br> return stringwriter.toString();<br> }<br><br> public static String toQuotedString(String s, char c, boolean flag) {<br> if (s == null)<br> return null;<br> int i = flag ? count(s, c) : 0;<br> int j = s.length();<br> char ac[] = new char[2 + i + j];<br> int k = 0;<br> int l = 0;<br> ac[l++] = c;<br> for (; k < j; k++) {<br> char c1 = s.charAt(k);<br> ac[l++] = c1;<br> if (flag && c1 == c)<br> ac[l++] = c1;<br> }<br><br> ac[l] = c;<br> return new String(ac);<br> }<br><br> static int count(String s, char c) {<br> int i = 0;<br> if (s != null) {<br> int j = s.length();<br> do {<br> if (--j < 0)<br> break;<br> char c1 = s.charAt(j);<br> if (c1 == c)<br> i++;<br> } while (true);<br> }<br> return i;<br> }<br><br> private static final char HEXCHAR[] = { '0', '1', '2', '3', '4', '5', '6',<br> '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };<br><br> private static final String HEXINDEX = "0123456789abcdef01234567<wbr>89ABCDEF";<br><br> }<wbr><br><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
package cn.com.huawei.opensource.common.lang;
import java.io.*;
public class StringConverter {
public StringConverter() {
}
byte[] stringToFullByteArray(String s) {
int i = s.length();
byte abyte0[] = new byte[i * 2];
for (int j = 0; j < i; j++) {
char c = s.charAt(j);
abyte0[j * 2] = (byte) ((c & 0xff00) >>

abyte0[j * 2 + 1] = (byte) (c & 0xff);
}
return abyte0;
}
public static byte[] hexToByte(String s) throws IOException {
int i = s.length() / 2;
byte abyte0[] = new byte[i];
int j = 0;
if (s.length() % 2 != 0)
throw new IOException(
"hexadecimal string with odd number of characters");
for (int k = 0; k < i; k++) {
char c = s.charAt(j++);
int l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(c);<br> if (l == -1)<br> throw new IOException(<br> "hexadecimal string contains non hex character");<br> int i1 = (l & 0xf) << 4;<br> c = s.charAt(j++);<br> l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(c);<br> i1 += l & 0xf;<br> abyte0[k] = (byte) i1;<br> }<br><br> return abyte0;<br> }<br><br> public static String byteToHex(byte abyte0[]) {<br> int i = abyte0.length;<br> char ac[] = new char[i * 2];<br> int j = 0;<br> int k = 0;<br> for (; j < i; j++) {<br> int l = abyte0[j] & 0xff;<br> ac[k++] = HEXCHAR[l >> 4 & 0xf];<br> ac[k++] = HEXCHAR[l & 0xf];<br> }<br><br> return new String(ac);<br> }<br><br> public static int unicodeToAscii(OutputStream outputstream, String s,<br> boolean flag) throws IOException {<br> int i = 0;<br> if (s == null || s.length() == 0)<br> return 0;<br> int j = s.length();<br> for (int k = 0; k < j; k++) {<br> char c = s.charAt(k);<br> if (c == '\\') {<br> if (k < j - 1 && s.charAt(k + 1) == 'u') {<br> outputstream.write(c);<br> outputstream.write(117);<br> outputstream.write(48);<br> outputstream.write(48);<br> outputstream.write(53);<br> outputstream.write(99);<br> i += 6;<br> } else {<br> outputstream.write(c);<br> i++;<br> }<br> continue;<br> }<br> if (c >= ' ' && c <= '\177') {<br> outputstream.write(c);<br> i++;<br> if (c == '\'' && flag) {<br> outputstream.write(c);<br> i++;<br> }<br> } else {<br> outputstream.write(92);<br> outputstream.write(117);<br> outputstream.write(HEXCHAR[c >> 12 & 0xf]);<br> outputstream.write(HEXCHAR[c >> 8 & 0xf]);<br> outputstream.write(HEXCHAR[c >> 4 & 0xf]);<br> outputstream.write(HEXCHAR[c & 0xf]);<br> i += 6;<br> }<br> }<br><br> return i;<br> }<br><br> public static String asciiToUnicode(byte abyte0[], int i, int j) {<br> if (j == 0)<br> return "";<br> char ac[] = new char[j];<br> int k = 0;<br> for (int l = 0; l < j; l++) {<br> byte byte0 = abyte0[i + l];<br> if (byte0 == 92 && l < j - 5) {<br> byte byte1 = abyte0[i + l + 1];<br> if (byte1 == 117) {<br> l++;<br> int i1 = "0123456789abcdef01234567<wbr>89ABCDEF"<br> .indexOf(abyte0[i + ++l]) << 12;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]) << 8;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]) << 4;<br> i1 += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(abyte0[i<br> + ++l]);<br> ac[k++] = (char) i1;<br> } else {<br> ac[k++] = (char) byte0;<br> }<br> } else {<br> ac[k++] = (char) byte0;<br> }<br> }<br><br> return new String(ac, 0, k);<br> }<br><br> public static String asciiToUnicode(String s) {<br> if (s == null || s.indexOf("\\u") == -1)<br> return s;<br> int i = s.length();<br> char ac[] = new char[i];<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c == '\\' && k < i - 5) {<br> char c1 = s.charAt(k + 1);<br> if (c1 == 'u') {<br> k++;<br> int l = "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 12;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 8;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k)) << 4;<br> l += "0123456789abcdef01234567<wbr>89ABCDEF".indexOf(s<br> .charAt(++k));<br> ac[j++] = (char) l;<br> } else {<br> ac[j++] = c;<br> }<br> } else {<br> ac[j++] = c;<br> }<br> }<br><br> return new String(ac, 0, j);<br> }<br><br> public static int writeUTF(String s, OutputStream outputstream)<br> throws IOException {<br> int i = s.length();<br> boolean flag = false;<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c >= '\001' && c <= '\177') {<br> outputstream.write(c);<br> j++;<br> continue;<br> }<br> if (c > '\u07FF') {<br> outputstream.write(0xe0 | c >> 12 & 0xf);<br> outputstream.write(0x80 | c >> 6 & 0x3f);<br> outputstream.write(0x80 | c >> 0 & 0x3f);<br> j += 3;<br> } else {<br> outputstream.write(0xc0 | c >> 6 & 0x1f);<br> outputstream.write(0x80 | c >> 0 & 0x3f);<br> j += 2;<br> }<br> }<br><br> return j;<br> }<br><br> public static int getUTFSize(String s) {<br> int i = s != null ? s.length() : 0;<br> int j = 0;<br> for (int k = 0; k < i; k++) {<br> char c = s.charAt(k);<br> if (c >= '\001' && c <= '\177') {<br> j++;<br> continue;<br> }<br> if (c > '\u07FF')<br> j += 3;<br> else<br> j += 2;<br> }<br><br> return j;<br> }<br><br> public static String inputStreamToString(InputStream inputstream, int i)<br> throws IOException {<br> InputStreamReader inputstreamreader = new InputStreamReader(inputstream);<br> StringWriter stringwriter = new StringWriter();<br> char c = '\u2000';<br> char ac[] = new char[c];<br> int j = i;<br> do {<br> if (j <= 0)<br> break;<br> int k = inputstreamreader.read(ac, 0, j <= c ? j : ((int) (c)));<br> if (k == -1)<br> break;<br> stringwriter.write(ac, 0, k);<br> j -= k;<br> } while (true);<br> stringwriter.close();<br> return stringwriter.toString();<br> }<br><br> public static String toQuotedString(String s, char c, boolean flag) {<br> if (s == null)<br> return null;<br> int i = flag ? count(s, c) : 0;<br> int j = s.length();<br> char ac[] = new char[2 + i + j];<br> int k = 0;<br> int l = 0;<br> ac[l++] = c;<br> for (; k < j; k++) {<br> char c1 = s.charAt(k);<br> ac[l++] = c1;<br> if (flag && c1 == c)<br> ac[l++] = c1;<br> }<br><br> ac[l] = c;<br> return new String(ac);<br> }<br><br> static int count(String s, char c) {<br> int i = 0;<br> if (s != null) {<br> int j = s.length();<br> do {<br> if (--j < 0)<br> break;<br> char c1 = s.charAt(j);<br> if (c1 == c)<br> i++;<br> } while (true);<br> }<br> return i;<br> }<br><br> private static final char HEXCHAR[] = { '0', '1', '2', '3', '4', '5', '6',<br> '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };<br><br> private static final String HEXINDEX = "0123456789abcdef01234567<wbr>89ABCDEF";<br><br> }<wbr><br><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>