当前位置: 首页 > 知识库问答 >
问题:

我想通过循环输入来分隔字符串的每三个单词。String str="12345678";输出:"12,345,678"[关闭]

杨选
2023-03-14

公共类Main{

public static void main(String[] args) {

String str = "12345";

输出="12,345"

###

共有2个答案

颛孙成益
2023-03-14

如果必须将分隔符放入长度为n的字符串中的每个k-th位置,则字符串的长度必须大于k,并且分隔符的初始位置可以计算为(n-k-1)%k

要构建格式化的字符串,应该使用StringBuilder,并且可以预先计算其容量以包含n(n-1)/k分隔符。

static String format(String str, char c, int k) {
    int n = str.length();
    StringBuilder sb = new StringBuilder(n + (n - 1) % k);
    for (int i = 0, j = (n - k - 1) % k; i < n; i++) {
        sb.append(str.charAt(i));
        if (i < n - k && i == j) {
            sb.append(c);
            j += k;
        }
    }
    return sb.toString();
}

测试(对于k=3

for (String s : new String[]{"aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaaa", "123456789"}) {
    System.out.println(s + " -> " + format(s, ',', 3));
}
aa -> aa
aaa -> aaa
aaaa -> a,aaa
aaaaa -> aa,aaa
aaaaaa -> aaa,aaa
aaaaaaaa -> aa,aaa,aaa
123456789 -> 123,456,789
尹昂雄
2023-03-14

您可以迭代输入的字符,并在(i!=0)后每隔三位插入一个逗号。

public static void main(String[] args) {
    String str = "12345";
    int positionOfLastCharacter = str.length() - 1;
    String output = "";
    for (int i = 0; i < str.length(); ++i) {
        if (i != 0 && i % 3 == 0) {
            output = "," + output;
        }
        output = str.charAt(positionOfLastCharacter - i) + output;
    }
    System.out.println(output); // = "12,345"
}

如果在循环中连接字符串,最好使用StringBuilder:

public static void main(String[] args) {
    String str = "12345";
    int positionOfLastCharacter = str.length() - 1;
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < str.length(); ++i) {
        if (i != 0 && i % 3 == 0) {
            sb.insert(0, ",");
        }
        sb.insert(0, str.charAt(positionOfLastCharacter - i));
    }
    String output = sb.toString();
    System.out.println(output); // = "12,345"
}
 类似资料:
  • 我在想,当时间限制达到10秒时,我怎么能不按回车键就输入“回车”。 所以我将输入尽可能多的字符,直到时间结束。我想将该字符串保存为“in” 我刚刚发现Robot类可以按enter键,但我认为我使用它的方式不正确。

  • 主要内容:字符串的输出,字符串的输入其实在《 C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符输出字符串,不能自动换行。除了字符串,printf() 还能输

  • 问题内容: 我有一个要写入csv文件的字符串列表。列表看起来像 所以,我会尝试这样的事情: 不幸的是,数据没有写入三列。我发现: 如何正确格式化此行为以获得 最好采用格式? 问题答案: 您正在使用与结尾。该方法需要一个 lists列表 ,但是您传入了一个字符串列表。该方法实质上是这样做的: 其中每一行必须是一列列。字符串是单个字符的序列,因此这就是您所写的:单个字符由您选择的定界符分隔。 您需要将

  • 在高版本浏览器和 node.js 中,JavaScript 提供了 ArrayBuffer 和 Uint8Array 等 TypedArray 可以对二进制数据进行操作。但在低版本浏览器中并没有这些对象,而且这些对象没有自动伸缩性,不方便流式操作,相互转换也比较麻烦。 为兼容低版本浏览器,并且可以方便操作字符串和二进制数据,hprose for JavaScript 提供了一个 StringIO

  • 以下是程序必须遵循的规则: 中的每个单词都必须被拆分为字母,并从一开始就反转它们 只有长度等于或大于 例如,如果并输入。这里,的长度小于n,因此不能颠倒,但定律和引力的长度大于或等于3,因此必须颠倒为 和 最终输出:ttacaroitn的wal 在我给定的代码中,我只能反转字符串,但不能根据输入数字反转单词。不知道。