我有一个从网站中提取数据的爬虫,我得到以下字符串:
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拆分成一个数组,但要删除空数组,所以我这样做了:
String sr[] = s.split(" -- ");
List<String> list = new ArrayList<String>(Arrays.asList(sr));
list.removeAll(Arrays.asList("", null));
但我一直得到以下结果
[ , 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) --]
我想在数组中只有非空的东西 我的猜测是因为字符串不是真的空,我得到一些HTML空白的东西,我无法摆脱。
做完s.split("\\s+(--\\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) --]
答案 0 :(得分:5)
你可以试试这个:
String sr[] = s.split("\\s+--\\s+");
放"\\s+"
将占用任意数量的空格,而不只是" "
,这只是一个空格(如果您只想考虑space
字符,请替换\\s
space
字符String sr[] = s.split("\\s+(--\\s+)+");
。如果要避免数组中的所有emply元素,请尝试:
(--\\s+)+
拥有{{1}}意味着即使重复模式,也会将它们全部删除。
答案 1 :(得分:0)
我认为你要找的是String.replace():
String sentence = "Hello World !";
String str = sentence.replace(" ", "");
System.out.println(str);
输出:
HelloWorld!
答案 2 :(得分:0)
您可以在数组中的字符串上调用String#trim()
,这将删除所有空格。
答案 3 :(得分:0)
删除所有空字符串以及列表中只包含空格的字符串:
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String s = it.next();
if (s.matches("^\\s*$")) {
it.remove();
}
}
答案 4 :(得分:0)
试试这个:
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);
答案 5 :(得分:0)
ArrayList<String> result = new ArrayList<String>();
String entries[] = s.split("--");
for(String entry:entries){
String noSpace = entry.replaceAll(" ","");
if(!noSpace.isEmpty()){
result.add(noSpace);
}
}
return result;
字符串被&#34; - &#34;拆分,然后每个元素都被添加到结果中,除非它只包含空格。