Copiez le code comme suit :
paquet com.whatycms.common.util ;
importer org.apache.commons.lang.StringUtils ;
/**
* <PRÉ>
* Fournit une conversion pleine largeur -> demi-largeur, demi-largeur -> pleine largeur pour les chaînes
* </PRÉ>
*/
classe publique BCConvert {
/**
* Les caractères visibles dans la table ASCII commencent à ! et la valeur de décalage est 33 (décimal)
*/
caractère final statique DBC_CHAR_START = 33; // Demi-largeur !
/**
* Les caractères visibles dans le tableau ASCII se terminent par ~ et la valeur de décalage est 126 (Décimal)
*/
caractère final statique DBC_CHAR_END = 126; // demi-largeur~
/**
* La pleine chasse correspond aux caractères visibles de la table ASCII de ! Commencez avec la valeur de décalage 65281
*/
caractère final statique SBC_CHAR_START = 65281; // Pleine largeur !
/**
* La pleine largeur correspond aux caractères visibles de la table ASCII jusqu'à la fin de ~, la valeur du décalage est de 65374
*/
caractère final statique SBC_CHAR_END = 65374; // Pleine largeur ~
/**
* Le décalage relatif entre les caractères visibles dans la table ASCII sauf les espaces et les caractères pleine chasse correspondants
*/
static final int CONVERT_STEP = 65248; // Intervalle de conversion pleine largeur et demi-largeur
/**
* La valeur des espaces pleine largeur, qui ne respecte pas le décalage relatif par rapport à ASCII, doit être traitée séparément
*/
caractère final statique SBC_SPACE = 12288; // Espace pleine largeur 12288
/**
* La valeur de l'espace demi-largeur, qui est 32 (décimal) en ASCII
*/
caractère final statique DBC_SPACE = ' '; // espace demi-largeur
/**
* <PRÉ>
* Conversion de caractères demi-chasse -> caractères pleine chasse
* Ne traite que les espaces, les caractères entre ! et ˜, ignore les autres
* </PRÉ>
*/
chaîne statique privée bj2qj (chaîne src) {
si (src == nul) {
retourner src ;
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
pour (int i = 0; i < ca.length; i++) {
if (ca[i] == DBC_SPACE) { // S'il s'agit d'un espace demi-largeur, remplacez-le directement par un espace pleine largeur
buf.append(SBC_SPACE);
} else if ((ca[i] >= DBC_CHAR_START) && (ca[i] <= DBC_CHAR_END)) { // Les caractères sont visibles entre !
buf.append((char) (ca[i] + CONVERT_STEP));
} else { // N'effectue aucun traitement pour les caractères autres que les espaces et autres caractères visibles dans la table ascii
buf.append(ca[i]);
}
}
return buf.toString();
}
/**
* <PRÉ>
* Conversion de caractères pleine chasse -> caractères demi-chasse
* Ne gérez que les espaces pleine largeur, pleine largeur ! aux caractères entre pleine largeur ~, et les autres caractères sont ignorés
* </PRÉ>
*/
chaîne statique publique qj2bj (chaîne src) {
si (src == nul) {
retourner src ;
}
StringBuilder buf = new StringBuilder(src.length());
char[] ca = src.toCharArray();
pour (int i = 0; i < src.length(); i++) {
if (ca[i] >= SBC_CHAR_START && ca[i] <= SBC_CHAR_END) { // Si en pleine largeur ! à pleine largeur ~ plage
buf.append((char) (ca[i] - CONVERT_STEP));
} else if (ca[i] == SBC_SPACE) { // S'il s'agit d'un espace pleine largeur
buf.append(DBC_SPACE);
} else { //Ne gère pas les espaces pleine largeur, pleine largeur ! aux caractères pleine chasse ~ en dehors de la plage
buf.append(ca[i]);
}
}
return buf.toString();
}
public static void main (String[] arguments) {
System.out.println(StringUtils.trimToEmpty(" a,b, c "));
Chaîne s = "nihaohk | nihehehe ,. 78 7 ";
s=BCConvert.qj2bj(s);
System.out.println(s);
System.out.println(BCConvert.bj2qj(s));
}
}
La sortie de la console est la suivante :
Copiez le code comme suit :
abc
nihaohk | nihéhé,. 78 7
nhhahk|| nihehe,. 78 7