如何在java中使用多个字符串,包括乘以0

时间:2016-10-21 04:01:38

标签: java string

我想要一个可以复制字符串的基元。它将字符串和重复次数作为输入并生成输出。重复次数包括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>

任何人都有更整洁的解决方案吗?

3 个答案:

答案 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);
}