文字列の書式設定に手伝ってください。 私はString []
を持っていて、結果の文字列に各文字列を追加しています。これはJOptionPane
に表示されます。各文字列を結果に追加するときは、String.format("%-20s", String[i])
を使用して、最終結果に追加される各文字列の長さが20で、左揃えになっていることを確認しました。新しい行で5単語ごとに開始されます。しかし、JOptionPane
に示された結果は、私が期待した結果ではありません。単語は整列していません。各ワードは20Java文字列のフォーマットが期待通りに機能しない
private String keywordsList = "soup(s?)(base(s*))? hot(pot(s*))? "
+ "meat(s*) poultr((y)|(ies)){1} "
+ "beef(s?) cow(s?) ox(es)? bull(s?) "
+ "pork(s?) pig(s?) oink "
+ "mutton(s?) lamb(s?) sheep(s?) "
+ "chick(en(s)*)? hen(s)* rooster(s)* "
+ "seafood(s?) sea ocean shellfish fish((e)|(es))? "
+ "vegetable(s?) vege(s?) green plant(s?) veg(gies)? "
+ "signature(s?) recommendation(s?) recommend "
+ "h(i+) hell(o)+ y(o+) h(e)+(y) "
+ "morning afternoon evening "
+ "love(ly)? great good thank(s)? amazing excellent brilliant outstanding wonderful awesome okay "
+ "bad lousy useless stupid brainless fool(ish)? "
+ "got|get provide(s)* menu(s)* suppl(y|ies){1} offer(s*) "
+ "(good)?by(e+) leave end stop";
public String getKeywordList(){
String [] keywordsListArray = this.keywordsList.split("\\s");
String result = String.format("%-20s", keywordsListArray[0].replaceAll("[^a-z]", ""));
for (int i = 1; i < keywordsListArray.length; i++){
keywordsListArray[i] = keywordsListArray[i].replaceAll("[^a-z]", "");
if (i % 5 == 0){
result += String.format("%n%-20s", keywordsListArray[i]);
}
else
result += String.format("%-20s", keywordsListArray[i]);
}
return result;
}
*好奇心:* '{1}'のポイントは何ですか? – Andreas
*「JOptionPaneに表示される結果は、私が期待したものではありません」*何を期待したのですか?あなたは[固定幅フォント](https://en.wikipedia.org/wiki/Monospaced_font)を使用していないためです。 – Andreas
正規表現の{1}は、前の式の出現回数を指定します。この場合、「y」または「ies」が一度だけ表示されるようにしたかった –