1. ホーム
  2. java

文字列の文字数を制限し、残りを切り落とすこと

2023-09-19 23:56:50

質問

私は、クラス内部で得られたいくつかの値でログの最後にサマリーテーブルを作成する必要があります。 ログを作成する必要があります。表は固定幅で印刷される必要があります。 形式で印刷する必要があります。これを行うためのコードはすでに持っていますが、Strings、doubles、ints を固定幅のサイズに制限する必要があります。 doubles および ints をコードにハードコードされた固定幅のサイズに制限する必要があります。

で固定幅のテーブルを印刷したいとします。

    int,string,double,string
    int,string,double,string
    int,string,double,string
    int,string,double,string

    and the fixed widths are: 4, 5, 6, 6.

値がこの幅を超える場合、最後の文字を切り落とす必要があります。そのため 例えば

    124891, difference, 22.348, montreal

は、表示すべき文字列であるべきです。

    1248 diffe 22.348 montre

コンストラクタで、文字列が特定の文字数を超えないように強制する必要があると考えています。 文字列が特定の文字数を超えないようにする必要があると考えています。おそらく を文字列にキャストし、最大幅の要件を強制することができます。 要件を強制することができます。

どのメソッドがこれを行うのか、または文字列をインスタンス化してそのように動作させることができるのかはわかりません。 どのメソッドがこれを行うのか、または文字列がそのように動作するようにインスタンス化できるのかはわかりません。 フォーマッターを使用すると、文字列を印刷するための フォーマッターを使用することは、文字列を印刷するための固定フォーマットを助けるだけで、実際に最大長を超える文字を切り刻むことはありません。 最大長を超える文字を切り捨てることはできません。

どのように解決するのですか?

不要な文字をカットするために使用します。

String.substring(0, maxLength); 

String aString ="123456789";
String cutString = aString.substring(0, 4);
// Output is: "1234" 

入力文字列が期待される長さより短いときに IndexOutOfBoundsException が発生しないようにするには、代わりに次のようにします。

int maxLength = (inputString.length() < MAX_CHAR)?inputString.length():MAX_CHAR;
inputString = inputString.substring(0, maxLength);

もし、整数や倍数がある長さになるようにしたいのであれば、次のようにします。 数値フォーマット を使って、文字列表現を切り捨てる代わりに数値をフォーマットすることをお勧めします。