如何使用空格分割字符串并将空格包含在结果中?多个空格分割。

3

我使用的代码可以将带任意数量空格的字符串拆分为数组:

String out="SELECT * FROM EMP WHERE EMPID=10";
String array[] = out.split("\\s+");

我希望在用空格分割时,将“out”字符串中的空格包含在array[]对象中。 我想要的输出是:
array[]={"SELECT","[WHITE SPACE]","*","[WHITE SPACE]","FROM","[WHITE SPACE]","EMP","[WHITE SPACE]","WHERE","[WHITE SPACE]","EMPID=10"}

但是我得到的输出是:
 array[]={"SELECT","*","FROM","EMP","WHERE","EMPID=10"}

非常感谢您的帮助


可能是这个问题的重复:如何分割字符串并保留分隔符? - ashiquzzaman33
3个回答

5

由于split接受正则表达式,因此您可以使用lookarounds

out.split("(?<=\\s)|(?=\\s)");

这将输出:
[SELECT,  , *,  , FROM,  , EMP,  , WHERE,  , EMPID=10]

请注意,分隔符(在您的情况下是空格)包含在结果中。

3

尝试按照以下方式拆分:

  String array[] = out.split("(?=\\s)",-1);

代码如下:
 public static void main(String[] args) {
    String out="SELECT * FROM EMP WHERE EMPID=10";
    String array[] = out.split("(?=\\s)",-1);

    for (String string : array) {       
    System.out.print(string);
    }
  }

输出:

SELECT * FROM EMP WHERE EMPID=10

如果我想用分号进行拆分,并将分号包含在数组列表中,我可以使用String array[] = out.split("(?=;)",-1)吗? - zameer
@zameer,你能给我提供一些输入并期望输出吗? - Abdelhak
我的意思是,你如何使用 out.split("(?=\s)",-1) 按空格拆分字符串。现在我的问题是,我如何使用分号 (;) 拆分字符串。我能否使用上述解决方案,如 String array[] = out.split("(?=\;)",-1)。 - zameer
以上评论没有满足我的要求,我将粘贴代码。我的要求是,每当字符串分割时,我想在字符串中添加分号,但分号会添加到下一个字符串中,以下是代码:String sampleContent="hello ; hai ; come fast ;"; String SQLScripts[] = sampleContent.split("(?=\;)",-1); 在for循环中循环后,我得到的输出为===>: OUTPUT: hello ,OUTPUT: ; hai ,OUTPUT: ; come fast ,OUTPUT: ; 但我希望分号只添加到第一个拆分字符串中,例如:hello; hai; - zameer
@zameer 我使用了这个:sampleContent.split("(?=\s)",-1); 然后我得到了这个输出:hello ; hai ; come fast ; ===> 如果你只想要:hello ; hai ; 请给我一些时间来完成它。 - Abdelhak
感谢您的回复,实际上我是用分号而不是空格进行拆分。我想您是用空格进行拆分。代码如下:String SQLScripts[] = sampleContent.split("(?=\;)",-1); - zameer

2

试试这个,

String out="SELECT * FROM EMP WHERE EMPID=10";
    out = out.replaceAll("\\s+", ",[WHITE SPACE],");

    String [] array = out.split(",");

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

    for(String str : array){
        list.add(str);
    }
    System.out.println(list);

输出: 这里输入图片描述


1
我认为他并不是真的想用[WHITE SPACE]替换 。我猜他希望空白字符也作为字符串出现在输出数组中。 - YoungHobbit
然后他们必须将其提交为仅包含空格,任何方式都可以用“ ”替换[WHITE SPACE]。 - Vishal Gajera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接