2013-12-14 94 views
0

在我的地圖應用程序中,我允許用戶添加自定義標記。這將經緯度,長度和他們選擇的標題保存到Shared Prefs。 示例字符串刪除字符串的特定部分而不知道要刪除的內容

23.5678,18.0987,My Custom Marker_10.45567,56.37439,My Second Custom Marker_-10.45567,-56.37439,My Third Custom Marker 

長按一個標記後,它變爲可拖動。用戶將其拖到新位置並放開。一旦放手,他們有三個選項...移動到這裏,取消和刪除標記

我可以移動並取消就好了。當想要刪除標記時,我需要Lat,Lon,Title來使用.replace()。但是,當一個標記被長時間按下來啓動一個拖拽時,新的座標與它相關聯,唯一保持不變的是標題。此外,座標長度可能會有所不同,所以這種限制我的選擇。 所以,我需要採取上面的字符串,並使用只有標題刪除一組lat,lon,標題項目。

示例:用戶長按標記2(10.45567,56.37493,我的第二個自定義標記),然後決定要刪除它。我需要刪除那部分字符串,並保留其餘部分。還要注意,下劃線分隔每個標記信息,分隔座標和標題名稱的逗號。所以如果第一個標記被刪除,第二個標記的下劃線也需要被刪除。

+0

你的意思是,如果我想刪除'(10.45567,56.37493,我的第二個自定義標記)'然後我必須留下'23.5678,18.0987,我的自定義Marker_-10.45567,-56.37439,我的第三個自定義Marker'? –

+0

是的,先生,確切地說,但請記住,我們只能使用標題EG來標識整個部分:我的第二個自定義標記。另外,如果它的第一個標記,在開始刪除時不會有下劃線,但它將與所有其他標記一起出現。 – jb15613

回答

2

這種方法將做到這一點。

您所查詢的結果是:

res = 23.5678,18.0987,My Custom Marker_-10.45567,-56.37439,My Third Custom Marker 

請沒有這個代碼是沒有效率的。有很多分配和未優化的搜索。

static private String remove(String title, String data) { 
    String result = ""; 
    String[] markers = data.split("\\_"); 
    for(String marker : markers) { 
     String[] parts = marker.split(",", 3); // 3: limit the number of splits, in case you have commas in the title 
     if(parts[2].equals(title)) { 
      continue; 
     } 
     if(result.length() > 0) { 
      result+='_'; 
     } 
     result += marker; 
    } 
    return result; 
} 
+0

是的,這工作,我也在那裏的一半!將此標記爲答案,謝謝我的朋友。快樂編碼:) – jb15613