[英]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.