【问题标题】:spliting a string by space and dot and comma at the same time同时用空格和点和逗号分割字符串
【发布时间】:2019-11-09 11:44:05
【问题描述】:

如何同时按空格、点和逗号分割字符串?我想摆脱它们,只得到文字。

我的空间代码:

str=array.get(0).split(" ");

根据建议我写了这篇

 str=array.get(0).split("[ ]|[.]|[,]|[ \t]");

但我发现了一个新问题

String

New problem

【问题讨论】:

  • 举个例子输入输出
  • 使用字符类[ .,]分割空格、点和逗号
  • 我更新了我的答案以解决空字符串问题。看看它是否有效。

标签: java android string split


【解决方案1】:

使用.split() 可能会导致数组中有空条目。

试试这个:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

String text = "This is... a real sentence, actually.";

Pattern reg = Pattern.compile("\\w+");
Matcher m = reg.matcher(text);

while (m.find()) {
    System.out.println(m.group());
}

【讨论】:

    【解决方案2】:

    split 方法可以与 Regex 模式一起使用,因此您可以匹配更详细的情况来拆分字符串。

    您的案例的匹配模式是:

    [ \.,]+
    

    正则表达式解释:
    [ .,]+ - 括号创建字符集,将匹配集中的任何字符。
    [ .,]+ - 加号是一个量词,它会匹配上一个token(字符集)一次或多次,这解决了token相互跟随,创建空的问题数组中的字符串。

    您可以使用以下代码对其进行测试:

    class Main {
      public static void main(String[] args) {
        String str = "Hello, World!, StackOverflow. Test Regex";
        String[] split = str.split("[ .,]+");
        for(String s : split){
          System.out.println(s);
        }    
      }
    }
    

    输出是:
    你好
    世界!
    堆栈溢出
    测试
    正则表达式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 2022-01-17
      相关资源
      最近更新 更多