[英]JAVA, interpolate n times the same variable with String.format
我想使用String.format方法對相同的變量進行n次插值。
例如與
String value = "hi";
String interpolated = String.format(" %s %s %s %s ", value);
我預計
System.out.println(interpolated)
// " hi hi hi hi "
您可以這樣做(在發生時受到限制):
String value = "hi";
String interpolated = String.format(" %s %s %s %s ", IntStream.range(0, 4)
.mapToObj(i -> value)
.toArray());
您可以通過以下方式使其變型:
public String repeat(String string, int nbRepeat){
return String.format(" " + IntStream.range(0, nbRepeat)
.mapToObj(i -> "%s")
.collect(Collectors.joining(" ")),
IntStream.range(0, nbRepeat)
.mapToObj(
i -> string)
.toArray());
}
並使用它:
repeat("hi", 4);
repeat("ho", 6);
..沒有更清潔的方法嗎?
好吧,這取決於您要如何使用它。 如果要避免流,可以使用以下任何一種方法:
package sample;
import java.util.Arrays;
import java.util.Formatter;
public class JoinString {
public static void main(String[] args) {
String[] v = {"hi","hi","hi","hi"};
System.out.println(String.join(" ", v));
System.out.println(Arrays.asList(v));
Formatter formatter = new Formatter();
System.out.println( formatter.format("%1$1s %1$1s %1$1s", "hi"));
formatter.close();
System.out.format("%1$1s %1$1s %1$1s %n", "hi");
}
}
如果您使用的是Java 11,則可以使用repeat()
方法,例如:
String value = "hi ";
System.out.println(value.repeat(nTimes));
要獲得插值字符串,您還可以使用MessageFormat
類:
String interpolated = MessageFormat.format("{0}, {0}, {0}", "hi")
您可以使用以下代碼段:
String s = "hi";
int n = 9;
String interpolated = String.format("%0"+ n +"d", 0).replace("0", s );
System.out.println(interpolated );
您可以使用for循環。 請參考下面的代碼。
Scanner sc = new Scanner(System.in);
System.out.println("Enter word : ");
String str = sc.next();
System.out.println("times : ");
int n = sc.nextInt();
for(int i =0 ; i < n; i++){
System.out.print(String.format("%s ", str));
}
您可以為格式令牌指定參數位置,在這種情況下,您將對所有令牌使用相同的位置:
String interpolated = String.format(" %1$s %1$s %1$s %1$s ", value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.