我想要一个可以复制字符串的基元。它将字符串和重复次数作为输入并生成输出。重复次数包括0.意味着它将生成空字符串。除了下面的一个,我想不出更短的方法。下面的一个使用"。"作为示例字符串。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:orientation="vertical"
android:elevation="10dp"
android:padding="20dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFF"
android:textStyle="bold"/>
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FFF"/>
</LinearLayout>
任何人都有更整洁的解决方案吗?
答案 0 :(得分:4)
试试这个
private static String multiply(String str, int times) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < times; i++) {
sb.append(str).append(".");
}
return sb.toString();
}
答案 1 :(得分:0)
除了stringbuilder之外,如果你重复一个字符,那么创建一个数组并返回一个String对象可能会更快:
char repeat = /* some char */;
int amount = /* amount to repeat */;
char[] val = new char[amount];
IntStream.range(0, val.length).forEach(i -> val[i] = repeat);
return new String(val, 0, val.length);
虽然如果我没记错的话,如果你想自己保存优化,StringBuilder会让你初始化底层数组:
char repeat = /* some char */;
int amount = /* amount to repeat */;
StringBuilder sb = new StringBuilder(amount); //pass amount to avoid resize
IntStream.range(0, amount).forEach(i -> sb.append(repeat);
return sb.toString();
答案 2 :(得分:0)
试试这个。
static String multiply(String s, int dup) {
return new String(new char[dup]).replaceAll("\0", s);
}