Copy kode kodenya sebagai berikut:
paket com.whatycms.common.util;
import org.apache.commons.lang.StringUtils;
/**
* <PRA>
* Menyediakan konversi lebar penuh -> setengah lebar, setengah lebar -> lebar penuh untuk string
*</PRA>
*/
kelas publik BCConvert {
/**
* Karakter yang terlihat pada tabel ASCII dimulai dari !, dan nilai offsetnya adalah 33 (Desimal)
*/
karakter akhir statis DBC_CHAR_START = 33; // Setengah lebar!
/**
* Karakter yang terlihat pada tabel ASCII diakhiri dengan ~, dan nilai offsetnya adalah 126 (Desimal)
*/
karakter akhir statis DBC_CHAR_END = 126; // setengah lebar~
/**
* Lebar penuh sesuai dengan karakter yang terlihat pada tabel ASCII! Mulailah dengan nilai offset 65281
*/
karakter akhir statis SBC_CHAR_START = 65281; // Lebar penuh!
/**
* Lebar penuh sesuai dengan karakter tabel ASCII yang terlihat hingga akhir ~, nilai offsetnya adalah 65374
*/
karakter akhir statis SBC_CHAR_END = 65374; // Lebar penuh ~
/**
* Offset relatif antara karakter yang terlihat dalam tabel ASCII kecuali spasi dan karakter lebar penuh yang sesuai
*/
static final int CONVERT_STEP = 65248; // Interval konversi lebar penuh dan setengah lebar
/**
* Nilai spasi lebar penuh, yang tidak sesuai dengan offset relatif dari ASCII, harus diproses secara terpisah
*/
karakter akhir statis SBC_SPACE = 12288; // Spasi lebar penuh 12288
/**
* Nilai setengah lebar spasi yaitu 32 (Desimal) dalam ASCII
*/
static final char DBC_SPACE = ' '; // spasi setengah lebar
/**
* <PRA>
* Karakter setengah lebar->konversi karakter lebar penuh
* Hanya memproses spasi, karakter antara ! dan ˜, mengabaikan yang lain
*</PRA>
*/
String statis pribadi bj2qj(String src) {
jika (src == nol) {
kembalikan src;
}
StringBuilder buf = StringBuilder baru(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < ca.panjang; i++) {
if (ca[i] == DBC_SPACE) { // Jika spasi berukuran setengah, langsung ganti dengan spasi berukuran penuh
buf.append(SBC_SPACE);
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) { // Karakter adalah karakter yang terlihat di antara !
buf.append((char) (ca[i] + CONVERT_STEP));
} else { // Jangan melakukan pemrosesan apa pun untuk karakter selain spasi dan karakter lain yang terlihat di tabel ascii
buf.tambahkan(ca[i]);
}
}
kembalikan buf.toString();
}
/**
* <PRA>
* Karakter lebar penuh->konversi karakter lebar setengah
* Hanya menangani ruang lebar penuh, lebar penuh! ke karakter antara lebar penuh ~, dan karakter lainnya diabaikan
*</PRA>
*/
String statis publik qj2bj(String src) {
jika (src == nol) {
kembalikan src;
}
StringBuilder buf = StringBuilder baru(src.length());
char[] ca = src.toCharArray();
untuk (int i = 0; i < src.panjang(); i++) {
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) { // Jika lebar penuh! hingga lebar penuh ~ rentang
buf.append((char) (ca[i] - CONVERT_STEP));
} else if (ca[i] == SBC_SPACE) { // Jika spasi berukuran penuh
buf.tambahkan(DBC_SPACE);
} else { //Jangan menangani spasi dengan lebar penuh, dengan lebar penuh! hingga ~ karakter lebar penuh di luar rentang
buf.tambahkan(ca[i]);
}
}
kembalikan buf.toString();
}
public static void main(String[] args) {
Sistem.keluar.println(StringUtils.trimToEmpty(" a,b ,c "));
String s = "nihaohk| nihehehe,.78 7";
s=BCConvert.qj2bj(s);
Sistem.keluar.println;
System.out.println(BCConvert.bj2qj(s));
}
}
Output konsolnya adalah sebagai berikut:
Copy kode kodenya sebagai berikut:
a,b,c
nihaohk |.nihahe,. 78 7
nhhahk|| nihehe,. 78 7