【问题标题】:How to split string if it is followed by two or more space/whitespace in java?如果在java中后跟两个或更多空格/空格,如何拆分字符串?
【发布时间】:2013-04-03 06:42:32
【问题描述】:

在我的字符串中,我想根据两个或多个空格分割字符串或标记字符串。

例如

string = "I am  Chaitanya Gadam.      Split   this srting."

我希望输出为 -

str[0]= "I am"  
str[1]= "Chaitanya Gadam."  
str[2]= "Split"  
str[3]= "this string."  

【问题讨论】:

    标签: java regex string split


    【解决方案1】:
    string.split("\\s\\s+");
    

    (或)

    string.split("\\s{2,}");
    
     String string = "I am  Chaitanya Gadam.      Split   this srting.";
    
        String[] str = string.split("\\s{2,}");
    
        for(String s: str)
        {
            System.out.println(s+":"+s.length());
        }
        System.out.println(Arrays.toString(string.split("\\s\\s+")));
    
    Output:
    I am:4
    Chaitanya Gadam.:16
    Split:5
    this srting.:12
    [I am, Chaitanya Gadam., Split, this srting.]
    

    用两个或多个空格作为分隔符分割字符串。在正则表达式中使用转义字符而不是使用空格字符可以提高可读性。

    【讨论】:

    • Sunny,我们可以这样说,[I am] [ ] [Chaitanya Gadam.] [ ] [split] [ ] [this string.]
    【解决方案2】:

    尝试使用:String[] splitted = string.split(" +");

    public static void main(String[] args) throws ParseException{
        String string = "I am  Chaitanya Gadam.      Split   this srting.";
        String[] str = string.split("  +");
        System.out.println(Arrays.toString(str));
        for(String s : str)//Try printing this way .
            System.out.println(s);
    }
    

    输出:

    [I am, Chaitanya Gadam., Split, this srting.]
    

    【讨论】:

    • 你好 Achintya,我试过了,但它没有给我想要的输出。
    • 为什么我们在每个令牌之前都有空间?
    • @ChaitanyaGadam 没有空格或逗号。尝试使用 for 循环打印。
    • [我是,Chaitanya Gadam。,Split,这个 srting。] 我想你是在谈论这个输出中的额外空间。它只是字符串数组的tostring表示。
    • 是的,如果我不想要那个额外的空间怎么办?
    【解决方案3】:

    在这里,这应该可以工作:

    final String src = "I am  Chaitanya Gadam.      Split   this srting.";
    final String[] splits = src.split("[ ]{2,}");
    

    【讨论】:

    • Got- [我是,Chaitanya Gadam.,Split,这个 srting。] 为什么我们在每个令牌之前都有空间?
    • 投反对票,因为您不了解如何打印输出是完全错误的。这是Ideone
    • 在 for 循环中打印数组,您不会在每个标记前面有任何空格。不要只是投反对票
    • final String[] splits = src.split("[ ]{1,}");这是正确的:)
    • @MohanRajB - 不,那不正确(你可以自己试试)。
    【解决方案4】:

    使用 Stringutils.split() 将字符串按空格分割。例如StringUtils.split("Hello World") 返回“Hello”和“World”;

    为了解决上述情况,我们使用这样的拆分方法

    String split[]= StringUtils.split("Hello I'm your String");
    

    当我们打印分割数组时,输出将是:

    Hello
    
    I'm
    
    your
    
    String
    

    唯一的问题是如果你尝试拆分string = "I am Chaitanya Gadam. Split this srting."

    它将分裂 Chiatanya Gadam。进入

    [0]Chiatanya
    [1]Gadam.
    

    但你可以稍后再组合!

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2020-05-16
      • 1970-01-01
      • 2019-04-26
      • 2019-07-23
      相关资源
      最近更新 更多