2014-05-19 144 views
0

我有一个从网站提取数据履带和我得到以下字符串:的Java字符串分割到数组

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) --"; 

我NEET到字符串分割成一个数组,但discart空的,所以我这样做:

String sr[] = s.split(" -- "); 
List<String> list = new ArrayList<String>(Arrays.asList(sr)); 
list.removeAll(Arrays.asList("", null)); 

,但我一直得到以下结果

[    ,    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) --] 

我想在数组中仅s凝灰岩即不是空 我的猜测是这是因为字符串不真的是空的,我得到一些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) --] 
+0

我宁愿检查您的抓取工具并检查它是如何提取此字符串的。可能你可以直接提取这些元素。 – donfuxx

回答

5

你可以试试这个:

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

"\\s+"将在空间任意数,而不是仅仅" "这只是一个空间(如果你只想要space字符加以考虑,用字符替换\\s)。如果你想避免阵列中的所有元素emply,尝试:

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

(--\\s+)+意味着即使重复模式,它会删除它们。

+0

好吧,'正则表达式'ftw:D – displayname

+1

@ StefanR.Falk'正则表达式'总是ftw:D – AntonH

+0

我得到了不同的结果,但空的东西仍然在数组中,将更新原始帖子来显示,我猜像我说的,它不是一个真正的空字符串 –

0

我想你在找什么是String.replace()

String sentence = "Hello World !"; 
String str = sentence.replace(" ", ""); 

System.out.println(str); 

输出:

HelloWorld! 
0

你可以在str上打电话String#trim()在数组中,这将删除所有的空格。

+0

'trim()'删除前后空格,但这不是OP要求的。 – AntonH

0

要删除所有空字符串和那些只包含从列表中的空白:

Iterator<String> it = list.iterator(); 
while (it.hasNext()) { 
    String s = it.next(); 
    if (s.matches("^\\s*$")) { 
     it.remove(); 
    } 
} 
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); 
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; 

弦乐得到由分裂 “ - ”,那么除了只包含空格之外,每个元素都会添加到结果中。