为了账号安全,请及时绑定邮箱和手机立即绑定

如何用逗号分割字符串,后跟一个字母数字字符

如何用逗号分割字符串,后跟一个字母数字字符

梵蒂冈之花 2022-06-15 16:37:20
我试图通过使用 BufferedReader 来分离一个非常大的 .cvs(255 列),该 BufferedReader 抓取每一行并将其存储在一个字符串中。我希望能够通过命令和字母来拆分它。前任:1,2,3,5,6将拆分为1 | 2 | 3 | 4 | 5 | 6 | 7hello,world,good day to you, Sir,test会分裂成你好| 世界| 先生,祝您有美好的一天| 测试请注意我如何只分隔一个逗号,后面跟一个字母数字。空格前面的逗号不分开,而是句子的一部分。
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

对于每个字符串a
a.split(",(?=\\S)");

查看完整回答
反对 回复 2022-06-15
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

要使用逗号分隔,后跟字母数字字符,您可以使用


String pattern = ",(?=\\p{Alnum})";

或者,如果您计划支持任何 Unicode 字母,请在模式旁边传递Pattern.UNICODE_CHARACTER_CLASS

( ) 选项:(?U)


String pattern = "(?U),(?=\\p{Alnum})";

请参阅RegexPlanet 正则表达式演示。


Java演示:


String s = "hello,world,good day to you, Sir,test,1,2";

String[] result = s.split(",(?=\\p{Alnum})");

for (String r:result) {

    System.out.println(r); 

}

输出:


hello

world

good day to you, Sir

test

1

2


查看完整回答
反对 回复 2022-06-15
?
慕斯王

TA贡献1864条经验 获得超2个赞

在此链接中,有一个答案解释了Lookahead 和 Lookbehind的使用。在这里我留下一个我相信可以解决你描述的问题的代码:


private static String[] mySplit(final String line, final char separator) {

    String regex = "((?<=(" + separator + "\\w)|(?=(" + separator + "\\w))))";

    String[] split = line.split(regex);


    List<String> list = new ArrayList<>();

    for (int i = 0; i < split.length; i++) {

        String token = split[i];

        if (token.startsWith(String.valueOf(separator))) {

            split[i + 1] = token.substring(1) + split[i + 1];

        } else {

            list.add(token);

        }

    }


    return list.toArray(new String[list.size()]);

}


private static String concatenate(final String[] tokens, final char separator){

    StringBuilder builder = new StringBuilder();

    for (int i = 0; i < tokens.length; i++) {

        builder.append(tokens[i]).append((i < tokens.length - 1) ? separator : "");

    }


    return builder.toString();

}


public static void main(String[] args) {

    final String line = "hello,world,good day to you, Sir,test";

    final String[] tokens = mySplit(line, ',');

    final String newLine = concatenate(tokens, '|');

    System.out.println("newLine = " + newLine);

}


查看完整回答
反对 回复 2022-06-15
  • 3 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信