다음과 같이 코드 코드를 복사합니다 .
패키지 com.whatycms.common.util;
org.apache.commons.lang.StringUtils 가져오기;
/**
* <프리>
* 문자열에 대해 전각 -> 반자, 반자 -> 전각 변환 제공
* </PRE>
*/
공개 클래스 BCConvert {
/**
* ASCII 테이블에 보이는 문자는 !부터 시작하며, 오프셋 값은 33(10진수)입니다.
*/
static final char DBC_CHAR_START = 33; // 반폭!
/**
* ASCII 테이블에서 보이는 문자는 ~로 끝나며, 오프셋 값은 126(10진수)입니다.
*/
static final char DBC_CHAR_END = 126 // 반자~
/**
* 전체 너비는 ASCII 테이블의 표시되는 문자에 해당합니다! 오프셋 값 65281로 시작
*/
static final char SBC_CHAR_START = 65281; // 전체 너비!
/**
* 전폭은 ASCII 테이블에서 ~ 끝까지 표시되는 문자에 해당하며 오프셋 값은 65374입니다.
*/
static final char SBC_CHAR_END = 65374; // 전체 너비 ~
/**
* 공백을 제외하고 ASCII 테이블에 표시되는 문자와 해당 전자 문자 사이의 상대 오프셋
*/
static final int CONVERT_STEP = 65248; // 전폭 및 반폭 변환 간격
/**
* ASCII의 상대 오프셋을 따르지 않는 전각 공백의 값은 별도로 처리해야 합니다.
*/
static final char SBC_SPACE = 12288; // 전폭 공간 12288
/**
* 반각 공백의 값으로 ASCII에서는 32(10진수)입니다.
*/
static final char DBC_SPACE = ' '; // 반자 공백
/**
* <프리>
* 반각문자->전각문자 변환
* 공백, ~ 사이의 문자만 처리하고 나머지는 무시합니다.
* </PRE>
*/
개인 정적 문자열 bj2qj(String src) {
if (src == null) {
src를 반환합니다.
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < ca.length; i++) {
if (ca[i] == DBC_SPACE) { // 반각 공백이면 직접 전각 공백으로 대체
buf.append(SBC_SPACE);
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) { // 문자는 ! ~ ~ 사이에 표시되는 문자입니다.
buf.append((char) (ca[i] + CONVERT_STEP));
} else { // 공백 및 ASCII 테이블에 표시되는 기타 문자 이외의 문자는 처리하지 않습니다.
buf.append(ca[i]);
}
}
buf.toString()을 반환합니다.
}
/**
* <프리>
* 전자->반각 문자 변환
* 전폭 공백만 처리하세요. 전폭! 전각 ~ 사이의 문자로, 기타 문자는 무시됩니다.
* </PRE>
*/
공개 정적 문자열 qj2bj(문자열 src) {
if (src == null) {
src를 반환합니다.
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
for (int i = 0; i < src.length(); i++) {
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) { // 전폭인 경우! 전폭 ~ 범위까지
buf.append((char) (ca[i] - CONVERT_STEP));
} else if (ca[i] == SBC_SPACE) { // 전폭 공백인 경우
buf.append(DBC_SPACE);
} else { //전폭 공백을 처리하지 마세요. 전폭입니다! 전각 ~ 범위 밖의 문자로
buf.append(ca[i]);
}
}
buf.toString()을 반환합니다.
}
공개 정적 무효 메인(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
nhhahk|| nihehe,. 78 7