[英]Maximum length of a String in Java
我是 Java 的新手,我想知道是否有一種方法可以限制在字符串中輸入的字符數?
我必須為一個學校項目創建一個應用程序,在該應用程序中我需要使用文件來存儲數據,並且我的 class 有各種字符串變量,因為我需要使用 RandomAccessFile class 的查找方法,並且在 a8CFDE6331BD59EB2AC96F96F866從文件開始,我需要所有對象都具有相同的大小,這可能嗎?
您不能限制字符串中的字符數。 我認為,在您的用例中,最好的解決方案是將字符串修剪到最大大小。
例如:
String input = "123456789";
String result = input.substring(0, 4);
//result is: "1234"
要確保在輸入字符串小於預期長度時不會收到IndexOutOfBoundsException
,請改為執行以下操作:
input.substring(0, Math.min(MAX_CHAR, input.length()));
Math.min()
將返回兩個參數中的最小值。
從文件中讀取數據時,將數據讀取為byte[]
是有意義的,它顯然具有固定的大小。
將byte[]
轉換為String
就像new String(bytes, StandardCharsets.UTF8)
或任何其他編碼一樣簡單。
話雖如此,您可以在您的應用程序中使編碼可配置,或使用系統默認值。 在這種情況下,您可以只使用new String(bytes)
來轉換它們。
您應該知道, String
的大小並不總是與它的字節大小相匹配。 事實上,對於US_ASCII
或ISO_8859_1
(=Latin1) 等簡單編碼,每個字符只有 1 個字節。 但是,像UTF-8
這樣的編碼支持更多字符,有時需要多個字節來存儲單個字符。
編碼及其可變字符大小的挑戰已經存在了很長時間,這也是數據庫具有各種不同的字符串數據類型(例如VARCHAR
與NVARCHAR
)的原因。
您的 class 項目的描述聽起來您需要或想要使用固定長度的記錄結構。 這些在 Java 中沒有得到很好的支持。
如果您的記錄中有一個字段,則只需使用類似於 Julian 答案中描述的解決方案。 無需擔心短字段,只需 append 在末尾空格並修剪到字段長度。
如果您的記錄中有多個字段,那么您將需要執行以下操作:
創建一個 class,其中包含記錄中每個字段的字段。 String
是每個字段最可能的類型。
向 class(在 #1 中提到)添加一個方法來構建固定長度記錄。 此方法將對固定長度記錄中的每個字段執行以下操作:
這假定所有字段都左對齊並填充了空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.