Java将字符串拆分为数组

Java将字符串拆分为数组,java,arrays,string,arraylist,Java,Arrays,String,Arraylist,我有一个从网站提取数据的爬虫,我得到以下字符串: String s = " -- Android 2.3.1 (Gingerbread) --   --   -- --   --   --   -- --

我有一个从网站提取数据的爬虫,我得到以下字符串:

    String s = "                 --                 Android 2.3.1 (Gingerbread) --                --                  --                 --                   --                  --                  --                 --                 8" Wide LCD - tela sensível ao toque (resistiva) --                 --                 800 x 600 (4:3) --                --                  --                 --                   --                  --                  --                 --                 1,2 GHz ARM Cortex A8 Core (RK2918) --               --                 4 GB (Memória Flash) e DRAM 512 Mb, DDR3 --                  --                 Slot para cartão Micro SD (Máx. 32 GB) --                --                 Integrado, suporta rotação de tela --                --                 Sim --               --                 Sim --               --                 Suporte a multi idioma: Português, Inglês, Francês, Espanhol, Chinês --                  --                 Navegador para Internet, vídeo, foto e áudio players,e-mail, calculadora, gravador de áudio, suporte a e-book, etc. --               --                   --                  --                  --                 --                 802.11 b/g/n (até 300 Mbps) --               --                 2.1 --               --                 USB 2.0 e Mini USB --                --                   --                  --                  --                 --                 14,65 x 21,50 x 1,45 --                  --                 525g --                   --                  --                 --                 Recarregável, Litium (4700 mAh, 3,7 V) --";
我需要将该字符串拆分为一个数组,但将空数组拆分,因此我执行了以下操作:

String sr[] = s.split(" -- ");
List<String> list = new ArrayList<String>(Arrays.asList(sr));
list.removeAll(Arrays.asList("", null));
我只想要数组中不是空的东西 我猜这是因为字符串不是真的空,我得到了一些HTML空白的东西,我无法摆脱

执行
s.split(“\\s+(-\\s+”)后
阵列仍保留空内容:

[, Android 2.3.1 (Gingerbread),  ,  ,  ,  ,  , 8&quot; Wide LCD - tela sensível ao toque (resistiva), 800 x 600 (4:3),  ,  ,  ,  ,  , 1,2 GHz ARM Cortex A8 Core (RK2918), 4 GB (Memória Flash) e DRAM 512 Mb, DDR3, Slot para cartão Micro SD (Máx. 32 GB), Integrado, suporta rotação de tela, Sim, Sim, Suporte a multi idioma: Português, Inglês, Francês, Espanhol, Chinês, Navegador para Internet, vídeo, foto e áudio players,e-mail, calculadora, gravador de áudio, suporte a e-book, etc.,  ,  ,  , 802.11 b/g/n (até 300 Mbps), 2.1, USB 2.0 e Mini USB,  ,  ,  , 14,65 x 21,50 x 1,45, 525g,  ,  , Recarregável, Litium (4700 mAh, 3,7 V) --]

我想你要找的是:

输出:

HelloWorld!

我想你要找的是:

输出:

HelloWorld!

您可以对数组中的字符串调用
String#trim()
,这将删除所有空格。

您可以对数组中的字符串调用
String#trim()
,这将删除所有空格。

您可以尝试以下方法:

String sr[] = s.split("\\s+--\\s+");
放入
“\\s+”
将占用任意数量的空格,而不仅仅是
,后者只是一个空格(如果您希望只考虑
空格
字符,请将
\\s
替换为一个普通的
空格
字符)。如果要避免数组中的所有emply元素,请尝试:

String sr[] = s.split("\\s+(--\\s+)+");
拥有
(-\\s++)
意味着即使模式重复,也会将其全部删除。

您可以尝试以下方法:

String sr[] = s.split("\\s+--\\s+");
放入
“\\s+”
将占用任意数量的空格,而不仅仅是
,后者只是一个空格(如果您希望只考虑
空格
字符,请将
\\s
替换为一个普通的
空格
字符)。如果要避免数组中的所有emply元素,请尝试:

String sr[] = s.split("\\s+(--\\s+)+");

具有
(-\\s++)
意味着即使模式重复,也会将其全部删除。

要从列表中删除所有空字符串和仅包含空格的字符串,请执行以下操作:

Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    if (s.matches("^\\s*$")) {
        it.remove();
    }
}
Iterator it=list.Iterator();
while(it.hasNext()){
字符串s=it.next();
如果(s.matches(“^\\s*$”){
it.remove();
}
}

要从列表中删除所有空字符串和仅包含空格的字符串,请执行以下操作:

Iterator<String> it = list.iterator();
while (it.hasNext()) {
    String s = it.next();
    if (s.matches("^\\s*$")) {
        it.remove();
    }
}
Iterator it=list.Iterator();
while(it.hasNext()){
字符串s=it.next();
如果(s.matches(“^\\s*$”){
it.remove();
}
}
试试这个:

    String sr[] = s.split("--");
    List<String> list = new ArrayList<String>(Arrays.asList(sr));
    ArrayList<String> removeList = new ArrayList<String>();
    String curr;
    for (int i=0; i < list.size(); i++) {
        curr = list.get(i).trim();
        list.set(i, curr);
        if (curr.length() == 0)
            removeList.add(curr);
    }
    list.removeAll(removeList);
    System.out.println(list);
String sr[]=s.split(“--”);
List List=newarraylist(Arrays.asList(sr));
ArrayList removeList=新的ArrayList();
字符串货币;
对于(int i=0;i
试试这个:

    String sr[] = s.split("--");
    List<String> list = new ArrayList<String>(Arrays.asList(sr));
    ArrayList<String> removeList = new ArrayList<String>();
    String curr;
    for (int i=0; i < list.size(); i++) {
        curr = list.get(i).trim();
        list.set(i, curr);
        if (curr.length() == 0)
            removeList.add(curr);
    }
    list.removeAll(removeList);
    System.out.println(list);
String sr[]=s.split(“--”);
List List=newarraylist(Arrays.asList(sr));
ArrayList removeList=新的ArrayList();
字符串货币;
对于(int i=0;i
ArrayList结果=新建ArrayList();
字符串条目[]=s.split(“--”);
for(字符串条目:条目){
字符串noSpace=entry.replaceAll(“,”);
如果(!noSpace.isEmpty()){
结果:添加(noSpace);
}
}
返回结果;
字符串被“-”分割,然后每个元素都被添加到结果中,除非它只包含空格。

ArrayList result=new ArrayList();
字符串条目[]=s.split(“--”);
for(字符串条目:条目){
字符串noSpace=entry.replaceAll(“,”);
如果(!noSpace.isEmpty()){
结果:添加(noSpace);
}
}
返回结果;

字符串被“-”分割,然后每个元素都被添加到结果中,除非它只包含空格。

trim()
删除前导空格和尾随空格,但这不是OP真正要求的。
trim()
删除前导空格和尾随空格,但这并不是OP真正想要的。我宁愿检查你的爬虫程序,并检查它是如何提取这个字符串的。也许你可以直接提取这些元素。我更愿意检查你的爬虫程序,看看它是如何提取这个字符串的。也许你可以直接提取这些元素。@StefanR.Falk
regex
总是ftw:我得到了一个不同的结果,但是空的东西仍然在数组中,将更新原始帖子以显示,我想就像我说的,它不是真的空的String@MauroMazzucco看到你的编辑了。它可能是某种无形的控制角色,就像你说的。尝试显示它(十六进制值或类似的东西)。您可能需要将该元素复制/粘贴到用于拆分的正则表达式中。同时检查您的数据提取器。@StefanR.Falk
regex
始终是ftw:我得到了一个不同的结果,但空的内容仍然在数组中,将更新原始帖子以显示,我想就像我说的,它不是真的空的String@MauroMazzucco看到你的编辑了。它可能是某种无形的控制角色,就像你说的。尝试显示它(十六进制值或类似的东西)。您可能需要将该元素复制/粘贴到用于拆分的正则表达式中。同时检查您的数据提取器。