在java中重复一个字符串的简单方法?

  • 回答 (4)
  • 关注 (0)
  • 查看 (3026)

我正在寻找一个简单的公共方法或运算符,允许我重复一些字符串n次。我知道我可以用for循环写这个,但是我希望在必要的时候避免循环,并且在某个地方应该存在一个简单的直接方法。

String str = "abc";
String repeated = str.repeat(3);
repeated.equals("abcabcabc");

相关:

重复字符串JavaScript

创建NSString重复另一个字符串给定的次数

编辑

我试图避免循环时,他们是不完全必要的,因为:

即使它们被隐藏在另一个函数中,它们也会增加代码的行数。

有人阅读我的代码必须弄清楚我在做什么循环。即使它被评论并且有一个有意义的变量名,他们仍然必须确保它没有做任何“聪明”的事情。

程序员喜欢把巧妙的东西放在循环中,即使我把它写成“只做它打算做的事情”,也不排除有人来,并增加一些额外的聪明的“修复”。

他们很容易出错。对于涉及索引的循环往往会产生一个错误。

对于循环往往重用相同的变量,增加真正难以发现范围的错误的机会。

nr348399nr348399修改于
秋之夕颜清念念不忘,必有回响回答于

简单:

// create a string made up of n copies of string s
String.format("%0" + n + "d", 0).replace("0",s);

在Java 8中有一个更简单的方法:

// create a string made up of n copies of string s
String.join("", Collections.nCopies(n, s));
用户2145180修改于

String.format("%0" + 5 + "d", 0).replace("0", "aaabc");

String.join("", Collections.nCopies(5, "aaabc"));

new String(new char[5]).replace("\0", "aaabc");

repeatString("aaabc", 5, "");//见后面的方法

执行次数1000_000

耗时毫秒

1797

167

593

142

根据前面的几位大佬进行总结和测试,相对而言,2和4的耗时比较少,多次测试的结果4都比2用时更少一点。

注重性能就选择2或4

public static String repeatString(String str, int n, String seg) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < n; i++) {

sb.append(str).append(seg);

}

return sb.substring(0, sb.length() - seg.length());

}

用户1535673回答于

今天正好查这个问题,看到这个了。谢谢。

我补充几句吧,说的不对大家拍砖。

原文很明显是翻译过来的。后面各位的回答都很精彩,但是,我觉得和原文说的是两码事。

原文要传达的不是coding的奇技淫巧,其实这正是作者反对的东西,后面的回答似乎恰恰都是反其道而行之。

从代码风格上看,Java和C/C++,从某种角度看,其实是两代语言。代码写的明白如话可维护更重要,还是行数少效率高更重要?这是一个很大的话题。写代码像写小说一样,这是一种境界。写出一堆开发人员自己洋洋得意维护人员拍桌子骂娘的烂代码,其实没什么意义。现在硬件性能比以前大幅提高,除非真正遇到了性能的瓶颈,否则不要尝试为了所谓的精简优化去牺牲代码的直观性,而且,你自己拍脑袋拍出来的优化代码,实际运行效果未必如你预期。

御姐万岁回答于

这是最短的版本(需要Java 1.5+):

repeated = new String(new char[n]).replace("\0", s);

哪里n是要重复的字符串次数,s是重复的字符串。

扫码关注云+社区

领取腾讯云代金券