請幫我使用字符串格式。 我有一個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」或「iies」只出現一次。 –