In Java muss String um die Anzahl der Bytes abgeschnitten werden, wenn es sich um eine API-Verknüpfung mit einer begrenzten Anzahl von Bytes handelt. Auf Japanisch ist Charaset 2 Bytes, 3 Bytes ... und wenn Sie in der Mitte des Zeichens abschneiden, scheint es seltsam zu sein. Ich habe einen Moment darüber nachgedacht und den Code als Memorandum geschrieben Ich habe es nicht bewegt, aber vielleicht ist es okay ...
Sample.java
public static String truncateByte(String s, int length, Charset charset) {
if (StringUtils.isEmpty(s) || length <= 0) {
return s == null ? null : "";
}
if (s.getBytes(charset).length <= length) {
return s;
}
String r = new String(s.getBytes(charset), 0, length, charset);
while (r.length() >= 0 && !s.startsWith(r)) {
r = r.substring(0, r.length() - 1);
}
return r;
}
Recommended Posts