【问题标题】:Regex pattern to convert comma separated String正则表达式模式转换逗号分隔的字符串
【发布时间】:2015-10-07 16:42:08
【问题描述】:

将逗号分隔值的字符串更改为编号的换行值

例如:

输入:a,b,c

输出:

1.a
2.b
3.c

发现使用正则表达式模式很难更改它,而不是将字符串转换为字符串数组并循环。

【问题讨论】:

  • System.out.println(Arrays.toString("a,b,c".split("\\,")));你可以试试这个。

标签: java


【解决方案1】:

我不太确定,是否可以仅使用正则表达式而无需任何循环。像我一样,将字符串拆分为数组并对其进行迭代的解决方案是最直接的:

String value = "a,b,c";
String[] values = value.split(",");
String result = "";
for (int i=1; i<=values.length; i++) {
    result += i + "." + values[i-1] + "\n";
}

当然,可以不进行拆分和任何类型的数组,但这可能是一个有点尴尬的解决方案,例如:

String value = "a,b,c";
Pattern pattern = Pattern.compile("[(^\\w+)]");
Matcher matcher = pattern.matcher(value.replaceAll("\\,", "\n"));
StringBuffer s = new StringBuffer();
int i = 0;
while (matcher.find()) {
    matcher.appendReplacement(s, ++i + "." + matcher.group());
}
System.out.println(s.toString());

这里, 符号被替换为\n 换行符,然后我们在每行[(^\\w+)] 的开头寻找一组字符。如果找到任何组,那么我们将在该组的开头附加一个行号。但即使在这里,我们也必须使用循环来设置行号。而且这个逻辑不像第一个那么清晰。

【讨论】:

  • 循环我很喜欢.. 但模式匹配是我想要的方式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多