首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用仅后跟字母数字字符的逗号拆分字符串

如何使用仅后跟字母数字字符的逗号拆分字符串
EN

Stack Overflow用户
提问于 2019-02-13 02:14:26
回答 3查看 284关注 0票数 2

我试图通过使用一个BufferedReader来分离一个非常大的.cvs (255列),它抓取每一行并将其存储在一个字符串中。

我希望能够通过命令和字母将其拆分。例如:

1,2,3,5,6将拆分成

1|2|3|4|5|6|7

hello,world,good day to you, Sir,test将拆分成

hello | world |您好,先生|测试

请注意,我只分隔了后面跟着字母数字的逗号。空格前面的逗号不是分开的,而是句子的一部分。

EN

回答 3

Stack Overflow用户

发布于 2019-02-13 02:21:12

对于每个字符串a

a.split(",(?=\\S)");

票数 2
EN

Stack Overflow用户

发布于 2019-05-27 18:57:50

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

代码语言:javascript
运行
复制
String pattern = ",(?=\\p{Alnum})";

或者,如果您计划支持任何Unicode字母,则将Pattern.UNICODE_CHARACTER_CLASS

图案旁边的((?U))选项:

代码语言:javascript
运行
复制
String pattern = "(?U),(?=\\p{Alnum})";

请参阅RegexPlanet regex demo

Java演示:

代码语言:javascript
运行
复制
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); 
}

输出:

代码语言:javascript
运行
复制
hello
world
good day to you, Sir
test
1
2
票数 1
EN

Stack Overflow用户

发布于 2019-02-13 02:55:20

在这个链接中有一个解释Lookahead and Lookbehind用法的答案。这里我留下一段代码,我相信它可以解决你所描述的问题:

代码语言:javascript
运行
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54656271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档