删除字符串的特定部分而不确切知道要删除的内容

时间:2013-12-14 17:57:30

标签: android string replace substring trim

在我的地图应用程序中,我允许用户添加自定义标记。这会将lat,long和他们选择的标题保存到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,title项。

示例:用户长按标记2(10.45567,56.37493,我的第二个自定义标记),然后决定要删除它。我需要删除该部分字符串,并保留其余部分。另请注意,下划线分隔每个标记信息,分隔坐标和标题名称的逗号。因此,如果要删除第一个标记,则还需要删除第二个标记的下划线。

1 个答案:

答案 0 :(得分: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;
}