我正在寻找一个简单的公共方法或运算符,它允许我重复一些字符串n次.我知道我可以使用for循环来编写它,但我希望在必要时避免使用循环,并且某处应该存在一个简单的直接方法.
String str = "abc";
String repeated = str.repeat(3);
repeated.equals("abcabcabc");
Run Code Online (Sandbox Code Playgroud)
相关:
repeat string javascript 通过重复给定次数的另一个字符串来创建NSString
编辑
当他们不是完全必要的时候我试着避免循环,因为:
即使它们隐藏在另一个函数中,它们也会增加代码行数.
读我的代码的人必须弄清楚我在循环中做了什么.即使它被评论并且具有有意义的变量名称,它们仍然必须确保它没有做任何"聪明"的事情.
程序员喜欢把聪明的东西放在for循环中,即使我把它写成"只做它想要做的事情",这并不排除有人出现并增加一些额外的聪明"修复".
他们经常容易出错.对于涉及索引的循环,往往会产生一个错误.
For循环经常重用相同的变量,增加了很难找到范围错误的机会.
For循环增加了bug猎人必须看的地方数量.
我有一个在命令行模式下运行的Java程序.我想显示一个进度条,显示完成工作的百分比.你会在unix下使用wget看到同样的进度条.这可能吗?
例如,1, 2, 128, 256输出可以是(16位):
0000000000000001
0000000000000010
0000000010000000
0000000100000000
Run Code Online (Sandbox Code Playgroud)
我试过了
String.format("%16s", Integer.toBinaryString(1));
Run Code Online (Sandbox Code Playgroud)
它为左边填充放置空格:
` 1'
Run Code Online (Sandbox Code Playgroud)
如何将0s用于填充.我在Formatter中找不到它.还有另一种方法吗?
提前致谢.
PS 这篇文章描述了如何使用左0填充格式化整数,但它不适用于二进制表示.
public class Divers {
public static void main(String args[]){
String format = "|%1$-10s|%2$-10s|%3$-20s|\n";
System.out.format(format, "FirstName", "Init.", "LastName");
System.out.format(format, "Real", "", "Gagnon");
System.out.format(format, "John", "D", "Doe");
String ex[] = { "John", "F.", "Kennedy" };
System.out.format(String.format(format, (Object[])ex));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
|FirstName |Init. |LastName |
|Real | |Gagnon |
|John |D |Doe |
|John |F. |Kennedy |
Run Code Online (Sandbox Code Playgroud)
我希望输出居中.如果我不使用' - '标志,则输出将与右侧对齐.
我没有在API中找到中心文本的标志.
该文章有关于格式的一些信息,但没有对中心自圆其说.
我有一个字符串,说:
String s = "0123456789";
Run Code Online (Sandbox Code Playgroud)
我想用格式化程序填充它.我可以这两种方式:
String.format("[%1$15s]", s); //returns [ 0123456789]
Run Code Online (Sandbox Code Playgroud)
要么
String.format("[%1$-15s]", s); // returns [0123456789 ]
Run Code Online (Sandbox Code Playgroud)
如果我想截断我做的文字
String.format("[%1$.5s]", s); // returns [01234]
Run Code Online (Sandbox Code Playgroud)
如果我想从左边截断,我想我可以这样做:
String.format("[%1$-.5s]", s); // throws MissingFormatWidthException
Run Code Online (Sandbox Code Playgroud)
但这失败了,所以我尝试了这个:
String.format("[%1$-0.5s]", s); // throws MissingFormatWidthException
Run Code Online (Sandbox Code Playgroud)
以及:
String.format("[%1$.-5s]", s); // throws UnknownFormatConversionException
Run Code Online (Sandbox Code Playgroud)
那么如何使用格式标志从左侧截断?
我想创建一个string包含*符号n时间的内容.我只看到这种方式:
val s = ""
val n = 100
for (j in 0 until n) {
s += "*"
}
Run Code Online (Sandbox Code Playgroud)
但它看起来很丑陋,而且时间复杂度为O(n ^ 2).Kotlin有没有办法在没有时间复杂度更高的循环的情况下做到这一点?
如果我想要一个String s由n字符实例组成的字符A,那么这可以用Java做得更干净
public static String stringOfSize(int size, char ch) {
StringBuilder s = new StringBuilder();
while (size-- > 0) {
s.append(ch);
}
return s.toString();
}
Run Code Online (Sandbox Code Playgroud)
我们可以做得更好吗?就是想.