2016-03-13 6 views
0

Я хочу проанализировать эту строку в списке и вернуть {1.193493, 54.6333, 2.093077, 31.6235, 6.175355, 21.6479}. Как избавиться от квадратных скобок ???? Я использовал цикл for и заменил, но он не работает.Удаление специальных символов из строки

String st = "[[[1.193493,54.6333],[2.093077,31.6235],[6.175355,21.6479]]]" 

String[] parsed = st.split(","); 

for (String next : parsed) { 
     next.replace("//[", "").replace("//]", ""); 
    } 
+0

Строки ** неизменны **, поэтому ожидайте, что все методы, которые работают с строками, по-видимому, модифицируют String, чтобы вернуть новый экземпляр String, а не изменять сама строку. –

ответ

1

replace() работает с обычными строками, а не с регулярным выражением. Поэтому вы можете просто использовать:

next.replace("[", "").replace("]", ""); 

Также обратите внимание, что вам нужно назначить его какой-либо строковой переменной; присвоение его need не будет работать (не будет изменять элементы в массиве parsed).

Вы должны фактически удалить скобки первый и split позже, как это:

String[] parsed = st.replace("[", "").replace("]", "").split(","); 
0

Вы можете сделать это с помощью одной строки:

List<String> list = Arrays.asList(t.replaceAll("\\[", "").replaceAll("\\]", "").split(",")); 

Полный код:

package com.stackoverflow; 

import java.util.Arrays; 
import java.util.List; 

public class Demo 
{ 
    public static void main(String[] args) 
    { 
     String t = "[[[1.193493,54.6333],[2.093077,31.6235],[6.175355,21.6479]]]"; 

     List<String> list = Arrays.asList(t.replaceAll("\\[", "").replaceAll("\\]", "").split(",")); 
     for(String s : list) 
     { 
      System.out.println(s); 
     } 
    } 
} 

Преобразует строку в список строк и печатает ее. Если вам нужно преобразовать строки в двойные, используйте в цикле.

0

Вы могли бы достичь своей цели в два этапа.

1) Удалите все специальные символы, кроме запятой (,)

2) Затем разделить запятой (,)

public static void main(String[] args) {   
    String st = "[[[1.193493,54.6333],[2.093077,31.6235],[6.175355,21.6479]]]"; 
    String[] parsed = st.replaceAll("[^\\d.,]+", "").split(",");  
} 

Выход:

enter image description here

Смежные вопросы