Java String Byte String-Kürzung Unterstützt verstümmelte Zeichen

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;
}
  1. Das erste leere Muster wird abgestoßen
  2. Halten Sie die Anzahl der Bytes ein
  3. Lassen Sie die Zeichen um die Anzahl der Bytes abschneiden
  4. Schneiden Sie die abgeschnittenen Zeichen zeichenweise ab, bis das ursprüngliche Zeichen mit dem abgeschnittenen Zeichen beginnt
  5. Geben Sie das ausgeschnittene Zeichen zurück

Recommended Posts

Java String Byte String-Kürzung Unterstützt verstümmelte Zeichen
Java-Zeichenfolge
Herausforderung, mit verstümmelten Zeichen mit Java AudioSystem.getMixerInfo () umzugehen
[Java] Auffüllen von Zeichenfolgen
Java-String-Verarbeitung
Geteilter String (Java)
Umlauts verstümmelte Charaktere
[Java] Vergleich von Zeichenketten und && und ||
Mehrfacher Ersatz für Java-Zeichenfolgen
[Hinweis] Java: Zeichenfolgensuche
[Hinweis] Java: Zeichenkettenübersicht
Informationen zur Java String-Klasse
Konvertieren Sie ein Java-Byte-Array in eine hexadezimale Zeichenfolge
Zip-Komprimierung, die in einer Java-Umgebung nicht beeinträchtigt wird