我想使用String.format方法对相同的变量进行n次插值。
例如,
String value = "hi";
String interpolated = String.format(" %s %s %s %s ", value);
我希望
System.out.println(interpolated)
// " hi hi hi hi "
答案 0 :(得分:1)
您可以这样做(在发生时受阻):
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);
答案 1 :(得分:0)
如果您使用的是Java 11,则可以使用repeat()
方法,例如:
String value = "hi ";
System.out.println(value.repeat(nTimes));
要获取插值字符串,您还可以使用MessageFormat
类:
String interpolated = MessageFormat.format("{0}, {0}, {0}", "hi")
答案 2 :(得分:0)
您可以使用以下代码段:
String s = "hi";
int n = 9;
String interpolated = String.format("%0"+ n +"d", 0).replace("0", s );
System.out.println(interpolated );
答案 3 :(得分:0)
..有没有更清洁的方法?
取决于您的使用方式;如果要避免流,可以使用以下任何一种方法:
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");
}
}
答案 4 :(得分:0)
您可以使用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));
}
答案 5 :(得分:0)
您可以为格式令牌指定参数位置,在这种情况下,您将对所有令牌使用相同的位置:
String interpolated = String.format(" %1$s %1$s %1$s %1$s ", value);