簡體   English   中英

Java中基於長度的字符串填充

[英]String padding based on length in Java

所以,我有兩個字符串(line和objectCode)

我想先打印行,然后根據行長打印一些空格,然后再打印objectCode。 (以便所有objectCode都對齊。

我試過了,但輸出如下:

0000    FIRST   ST      RETADR,LX    172028
0003            LD      BX,#LENGTH    692028
0006    CLOOP   +JSUB   RDREC    03100000

objectCode是每行中的最后一個數字(172028),如您所見,它們沒有像我希望的那樣排列。

所以,從本質上講,我想要這樣的東西:

0000    FIRST   ST      RETADR,LX    172028
0003            LD      BX,#LENGTH   692028
0006    CLOOP   +JSUB   RDREC        03100000

我只是似乎不知道如何獲得它。 謝謝。

編輯

我嘗試過的

首先嘗試(這應該是可行的):

String write = String.format("%-45s%s", line, objectCode);
fw.write(write + "\n"); //Using a FileWriter

第二我嘗試了(作為最后的努力):

fw.write(line);
int numOfSpaces = 40 - line.length(); //arbitrary number to check if this works
for (int spaces = 0; spaces < numOfSpaces; spaces++) {
    fw.write(" ");
}
fw.write(objectCode);

我認為它可以打印較少的空格以獲取更長的行長度。.但是它似乎沒有用。

編輯

我已經找到了問題,但我不知道如何解決。

問題在於,在程序的早期,我修剪了每個行變量(修剪掉前面和結尾的空白),這樣我就可以單獨獲取行中的每個單詞。

所以,我有:

line = input.nextLine();
words[] = line.trim().split("\\s+"); //Splitting by white space

我認為trim()方法是我的問題……但是,我需要它才能執行程序打算執行的操作。

好吧,所以我想通了,想發布答案,以防其他人遇到這個問題。

因此,就像我說的那樣,問題是我正在根據空格修剪行變量(以使行中的每個單詞分開):

String line = input.next
String[] words = line.trim().split("\\s+"); //Get each word by itself

問題是,在程序的后面,我想在此行之后打印一些內容。 由於所有空白都消失了,因此無法獲得正確的行長:

0000    FIRST     ST        RETADR,LX  //line.length = 20 (no whitespace)
0003              LD        BX,#LENGTH //line.length = 16 (no whitespace)

這兩行均未考慮其長度中的任何空格。 所以當我在這樣的行之后寫東西時(使用文件編寫器)

String write = String.format("%-30s, %s", line, objectCode);
fw.write(write + "\n");

我會得到:

0000    FIRST     ST        RETADR,LX       172028
0003              LD        BX,#LENGTH            692028

這是因為當我為行分配30個空格(%30s)時不考慮空格。

為了解決這個問題,我不得不格式化行本身,而不是格式化行本身:

String write = String.format("%-10s%-10s%-10s%-10s%", word1, word2, word3, word4);
fw.write(write + "\t" + objectCode + "\n");

所以現在這有效地滿足了我的需求,因為每行分配了相同的空間,並且保持對齊(-10s%等)。

0000    FIRST     ST        RETADR,LX   172028
0003              LD        BX,#LENGTH  692028

暫無
暫無

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

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