Java将String拆分为Array

Mau*_*o M 0 java arrays string arraylist

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

    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) --";
Run Code Online (Sandbox Code Playgroud)

我需要将String拆分成一个数组但是丢弃空数组,所以我这样做了:

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

但我一直得到以下结果

[               ,               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) --]
Run Code Online (Sandbox Code Playgroud)

我想在数组中只有不空的东西我的猜测是因为字符串不是真的空,我得到一些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) --]
Run Code Online (Sandbox Code Playgroud)

Ant*_*onH 5

你可以试试这个:

String sr[] = s.split("\\s+--\\s+");
Run Code Online (Sandbox Code Playgroud)

放置"\\s+"将占用任意数量的空格,而" "不仅仅是一个空格(如果您只space想要考虑该字符,则替换\\s为一个space字符).如果要避免数组中的所有emply元素,请尝试:

String sr[] = s.split("\\s+(--\\s+)+");
Run Code Online (Sandbox Code Playgroud)

(--\\s+)+手段,即使是重复的模式,它会删除它们.