簡體   English   中英

從字符串中刪除特殊字符

[英]Removing special characters from string

我想將此字符串解析為一個列表,然后返回{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("//]", "");
    }

replace()適用於純字符串,不適用於正則表達式。 因此,您可以簡單地使用:

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

還要注意,您需要將其分配給一些字符串變量; 將其分配給need將不起作用(不會修改parsed數組中的元素)。

實際上,您應該先刪除括號然后再split ,如下所示:

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

您可以使用一行來完成此操作:

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

將字符串轉換為字符串列表並打印。 如果需要將字符串轉換為雙精度型,請在循環中使用Double.parseDouble(s)

您可以使用此正則表達式一次完成所有操作:

(?:\D*(\d*\.\d*))+

您可以分兩步實現目標。

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(",");    
}

輸出:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM