java - 如何在Java中每第n次出现字符时分割字符串

标签 java arrays string split

我想在每 4 次出现逗号 , 时分割一个字符串。

如何做到这一点?下面是一个例子:

String str = "1,,,,,2,3,,1,,3,,";

Expected output:
array[0]: 1,,,,
array[1]: ,2,3,,
array[2]: 1,,3,,

我尝试像这样使用 Google Guava:

Iterable<String> splitdata = Splitter.fixedLength(4).split(str);
output: [1,,,, ,,2,, 3,,1, ,,3,, ,]

我也尝试过这个:

String [] splitdata = str.split("(?<=\\G.{" + 4 + "})");
output: [1,,,, ,,2,, 3,,1, ,,3,, ,]

但这不是我想要的输出。我只想在每 4 次出现逗号时分割字符串。

谢谢。

最佳答案

取两个 int 变量。一是统计','的个数。如果出现“,”则计数将移动。如果计数达到 4,则将其重置为 0。另一个 int 值将指示将从何处截断字符串。它将从 0 开始,在检测到第一个字符串后,结束点(字符串中的字符位置)将是下一个字符串的第一个点。使用 this 起点和当前终点(i+1,因为发生后 i 值将递增)。最后将字符串添加到数组列表中。这是示例代码。希望对你有帮助。抱歉我的英语不好。

String str = "1,,,,,2,3,,1,,3,,";
int k = 0;
int startPoint = 0;
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < str.length(); i++)
{
  if (str.charAt(i) == ',')
  {
      k++;
      if (k == 4)
      {
          String ab = str.substring(startPoint, i+1);
          System.out.println(ab);
          arrayList.add(ab);
          startPoint = i+1;
          k = 0;
      }
  }
}

关于java - 如何在Java中每第n次出现字符时分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358388/

相关文章:

c - 如何分配指向结构体的二维指针数组

java - 将一个类似java套接字的程序放在云服务中

java - Android 将 github 库与 maven 一起使用是否安全

javascript - 如何按日期属性将对象捆绑在数组中

arrays - 具有值数组的 Jmeter 属性

java - 搜索字符串只打印出没有附加字符的搜索

java - java中将字符串转换为变量

string - MATLAB 字符串中的换行符

java - JAXWS : Why would one generate the client code within maven through jaxws-maven-plugin?

java - 如何读取 读取/获取 Dropbox 文件