คัดลอกรหัสรหัส ดังต่อไปนี้:
แพ็คเกจ com.whatycms.common.util;
นำเข้า org.apache.commons.lang.StringUtils;
-
* <PRE>
* ให้ความกว้างเต็ม -> ครึ่งความกว้าง, ครึ่งความกว้าง -> การแปลงเต็มความกว้างสำหรับสตริง
* </PRE>
-
BCConvert คลาสสาธารณะ {
-
* อักขระที่มองเห็นได้ในตาราง ASCII เริ่มต้นจาก ! และค่าออฟเซ็ตคือ 33 (ทศนิยม)
-
ถ่านสุดท้ายแบบคงที่ DBC_CHAR_START = 33; // ครึ่งความกว้าง!
-
* อักขระที่มองเห็นได้ในตาราง ASCII ลงท้ายด้วย ~ และค่าออฟเซ็ตคือ 126 (ทศนิยม)
-
ถ่านสุดท้ายคงที่ DBC_CHAR_END = 126; // ครึ่งความกว้าง ~
-
* ความกว้างเต็มสอดคล้องกับอักขระที่มองเห็นได้ของตาราง ASCII จาก! เริ่มต้นด้วยค่าออฟเซ็ต 65281
-
ถ่านสุดท้ายแบบคงที่ SBC_CHAR_START = 65281; // ความกว้างเต็ม!
-
* ความกว้างเต็มสอดคล้องกับอักขระที่มองเห็นได้ของตาราง ASCII ถึงจุดสิ้นสุดของ ~ ค่าออฟเซ็ตคือ 65374
-
ถ่านสุดท้ายแบบคงที่ SBC_CHAR_END = 65374; // ความกว้างเต็ม ~
-
* ค่าชดเชยสัมพัทธ์ระหว่างอักขระที่มองเห็นได้ในตาราง ASCII ยกเว้นช่องว่างและอักขระเต็มความกว้างที่สอดคล้องกัน
-
int สุดท้ายคงที่ CONVERT_STEP = 65248; // ช่วงเวลาการแปลงเต็มความกว้างและครึ่งความกว้าง
-
* ค่าของช่องว่างเต็มความกว้างซึ่งไม่สอดคล้องกับออฟเซ็ตสัมพัทธ์จาก ASCII จะต้องได้รับการประมวลผลแยกกัน
-
ถ่านสุดท้ายแบบคงที่ SBC_SPACE = 12288; // พื้นที่เต็มความกว้าง 12288
-
* ค่าของช่องว่างแบบครึ่งความกว้าง ซึ่งก็คือ 32 (ทศนิยม) ในรูปแบบ ASCII
-
ถ่านสุดท้ายคงที่ DBC_SPACE = ' '; // พื้นที่ครึ่งความกว้าง
-
* <PRE>
* อักขระครึ่งความกว้าง -> การแปลงอักขระแบบเต็มความกว้าง
* ประมวลผลเฉพาะช่องว่าง อักขระระหว่าง ! และ ˜ ละเว้นอักขระอื่นๆ
* </PRE>
-
สตริงคงที่ส่วนตัว bj2qj (String src) {
ถ้า (src == null) {
กลับ src;
-
StringBuilder buf = StringBuilder ใหม่ (src.length());
ถ่าน [] ca = src.toCharArray();
สำหรับ (int i = 0; i < ca.length; i++) {
if (ca[i] == DBC_SPACE) { // ถ้าเป็นช่องว่างแบบครึ่งความกว้าง ให้แทนที่โดยตรงด้วยช่องว่างแบบเต็มความกว้าง
buf.ผนวก(SBC_SPACE);
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) { // อักขระเป็นอักขระที่มองเห็นได้ระหว่าง ! ถึง ~
buf.append((ถ่าน) (ca[i] + CONVERT_STEP));
} else { // ห้ามประมวลผลอักขระอื่นนอกเหนือจากช่องว่างและอักขระที่มองเห็นได้อื่นๆ ในตาราง ASCII
buf.ผนวก(ca[i]);
-
-
กลับ buf.toString();
-
-
* <PRE>
* อักขระเต็มความกว้าง -> การแปลงอักขระครึ่งความกว้าง
* จัดการเฉพาะช่องว่างแบบเต็มความกว้างเต็มความกว้าง! เป็นอักขระระหว่างความกว้างเต็ม ~ และอักขระอื่นๆ จะถูกละเว้น
* </PRE>
-
สตริงคงที่สาธารณะ qj2bj (String src) {
ถ้า (src == null) {
กลับ src;
-
StringBuilder buf = StringBuilder ใหม่ (src.length());
ถ่าน [] ca = src.toCharArray();
สำหรับ (int i = 0; i < src.length(); i++) {
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) { // ถ้าเต็มความกว้าง! ไปจนถึงความกว้างเต็ม ~ ช่วง
buf.append((ถ่าน) (ca[i] - CONVERT_STEP));
} else if (ca[i] == SBC_SPACE) { // หากเป็นพื้นที่เต็มความกว้าง
buf.ผนวก(DBC_SPACE);
} else { //อย่าจัดการกับช่องว่างแบบเต็มความกว้าง ความกว้างเต็ม! เป็นอักขระ ~ แบบเต็มความกว้างที่อยู่นอกช่วง
buf.ผนวก(ca[i]);
-
-
กลับ buf.toString();
-
โมฆะคงที่สาธารณะ main (String [] args) {
System.out.println(StringUtils.trimToEmpty(" a,b ,c "));
String s = "nihaohk || nihehehe ,. 78 7 ";
s=BCConvert.qj2bj(s);
System.out.println(s);
System.out.println(BCConvert.bj2qj(s));
-
-
เอาต์พุตคอนโซลจะเป็นดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
ก,ข,ค
นิห่าวก |. นิเฮเฮ,. 78 7
nhh ขอบฟ้าhk | | nih εh ε,. 78 7