簡體   English   中英

格式化帶有不確定數量的參數的字符串

[英]Format string with undefined number of arguments

是否可以在Java中創建類似someFunction("%s, %s, %s", 1, true, "qwe"); 結果應為1 true qwe

我嘗試了其他方法,例如使用PrintStream和其他一些類,但是我不知道該怎么做。

到目前為止,似乎可以確定的一件事是定義:

public static String prepare(String format, Object... arguments) {
    return ???
}

但是我不知道該怎么做。 你能給我一些建議嗎?

您可以使用String.format方法:

public static String prepare(String format, Object... arguments) {
    // do same sanity checks if needed
    return String.format(format, arguments);
}

這就是String.format功能,但我假設您已經知道這一點,並且希望構建自己的函數。

您具有的函數的標題正確。 現在,您需要將計數器count初始設置為零,創建一個StringBuilder ,並運行一個循環來掃描format字符串。

當循環遇到除'%'以外的其他字符時,請將其附加到StringBuilder 否則,請檢查下一個字符以獲取程序可以識別的格式,然后從arguments數組中獲取位置count處的對象。 根據需要設置對象格式,並將結果附加到StringBuilder 增量count

循環結束后, StringBuilder包含您返回給調用方的結果字符串。

當然,這只是算法的框架。 真正的實現需要照顧很多其他重要的事情,例如

  • 檢查循環中的count是否不超過arguments數組的末尾
  • 檢查最終count是否不少於arguments的對象數
  • 檢查格式說明符是否可以從arguments數組應用於對象

等等。

是的,這正是String.format()作用:

public class Test {

  public static void main(String[] args) {  
    System.out.println(format("%s %s %s", 12, "A", true));
  }

  public static String format(String format, Object ... args) {
    return String.format(format, args);
  }

}

這就是String.format()的目的

String.format("%s, %s, %s", 1, true, "666");

就你而言

return String.format(format, arguments);

暫無
暫無

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

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