有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将一个句子拆分为字符串数组,并保留特殊字符或空格

我想把一个有空格或任何特殊字符的句子分成一个单词数组,其中空格或特殊字符也是数组的一个元素

像这样的句子:

aman,amit and sumit went to top-up 

应拆分为字符串数组:

{"aman",",","amit"," ","and"," ","sumit"," ","went"," ","to"," ","top","-","up")

请建议使用任何正则表达式或逻辑来使用java进行拆分

我的问题遗漏了一件事。我还需要拆分数字字符。。但是使用split(“\b”)不会拆分具有以下内容的字符串

abc12def

进入

{ "abc", "12","def") or {"abc","1","2","def")

共 (2) 个答案

  1. # 1 楼答案

    我希望下面的代码片段能帮助您解决这个问题

    public static void main(final String[] args) {
            String message = "aman,amit and sumit went to top-up";
            String[] messages = message.split("\\b");
            for(String string : messages) {
                System.out.println(string);
            }
        }
    
  2. # 2 楼答案

    似乎您只需要匹配单词字符(\w+)或非单词字符(\W+)。将它们与一个交替操作符结合起来,并-也许-添加一个Pattern.UNICODE_CHARACTER_CLASS(或其内联/嵌入版本(?U)),以使模式能够识别Unicode:

    String value = "aman,amit and sumit went to top-up";
    String pattern = "(?U)\\w+|\\W+";
    List<String> lst = new ArrayList<>();
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(value);
    while (m.find())
        lst.add(m.group(0));
    System.out.println(lst);
    

    Java demo