簡體   English   中英

Java中字符串的最大長度

[英]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_ASCIIISO_8859_1 (=Latin1) 等簡單編碼,每個字符只有 1 個字節。 但是,像UTF-8這樣的編碼支持更多字符,有時需要多個字節來存儲單個字符。

編碼及其可變字符大小的挑戰已經存在了很長時間,這也是數據庫具有各種不同的字符串數據類型(例如VARCHARNVARCHAR )的原因。

您的 class 項目的描述聽起來您需要或想要使用固定長度的記錄結構。 這些在 Java 中沒有得到很好的支持。

如果您的記錄中有一個字段,則只需使用類似於 Julian 答案中描述的解決方案。 無需擔心短字段,只需 append 在末尾空格並修剪到字段長度。

如果您的記錄中有多個字段,那么您將需要執行以下操作:

  1. 創建一個 class,其中包含記錄中每個字段的字段。 String是每個字段最可能的類型。

  2. 向 class(在 #1 中提到)添加一個方法來構建固定長度記錄。 此方法將對固定長度記錄中的每個字段執行以下操作:

    1. 在每個字符串的末尾添加空格(添加與字段大小一樣多的空格)
    2. 從包含固定長度記錄中當前字段值的字符串中獲取字節數組。
    3. 將字節復制到固定記錄緩沖區中的正確位置。 由於您在上面的 #1 中添加了空格,因此無需填充該字段。 只需將其修剪到字段長度即可。

這假定所有字段都左對齊並填充了空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM