我想檢查檔案名長度
當我檢查從 mac 獲得的檔案名長度與我在 IDE(Intellij)中輸入的名稱長度不同時。
所以,我把字串的位元組列印到控制臺,但它是不同的。我想要的情況是我在 IDE 中輸入的長度。這可能嗎?
如何將字串的 java 位元組從 macString 更改為 IDEString
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String fileNameFromMac = "??????????.png";
String typedInIDE = "????.png";
System.out.println("File Name From Mac Length : " fileNameFromMac.length());
System.out.println("typedInIDE : " typedInIDE.length());
byte[] fileNameFromMacBytes = fileNameFromMac.getBytes(StandardCharsets.UTF_8);
byte[] typedInIDEBytes = typedInIDE.getBytes(StandardCharsets.UTF_8);
for(byte b : fileNameFromMacBytes) {
System.out.print(b);
}
System.out.println();
for(byte b : typedInIDEBytes) {
System.out.print(b);
}
}
}

uj5u.com熱心網友回復:
這是Unicode 規范化的區別。標準化為相同形式后,它們都將具有相同的長度(和相同的位元組):
import java.text.Normalizer;
public class Main {
public static void main(String[] args) {
String fromMac = "??????????.png";
String fromIDE = "????.png";
System.out.println("From Mac length: " fromMac.length());
System.out.println("From IDE length: " fromIDE.length());
String normFromMac = Normalizer.normalize(fromMac, Normalizer.Form.NFD);
String normFromIDE = Normalizer.normalize(fromIDE, Normalizer.Form.NFD);
System.out.println("Normalized from Mac length: " normFromMac.length());
System.out.println("Normalized from IDE length: " normFromIDE.length());
}
}
這會產生以下輸出:
From Mac length: 14
From IDE length: 8
Normalized from Mac length: 14
Normalized from IDE length: 14
有關詳細資訊,請參閱Oracle Java 教程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/456714.html
上一篇:如何用=替換最后一個 ?
