检查一个特定的字符串并删除android中的部分字符串

时间:2015-03-20 14:24:15

标签: java android regex string

我有一个以共享首选项存储的字符串格式。我想检查一个特定的单词是否存在。如果是,则删除从x开始并以y结束的那几个单词。

像这样:例如:

 String items = "Veggies=Beans-Carrot-Potato-Onions--DailyUse=Milk-Yogurt-Soap--Fruits=Apple-Banana-Grapes-Pears";

我想检查上面的字符串项目是否具有“DailyUse =”,如果是这样,请删除“DailyUse =”之后的所有单词,直到“ - ”。所以我的字符串看起来像:

String Newitems = "Veggies=Beans-Carrot-Potato-Onions--Fruits=Apple-Banana-Grapes-Pears";

这可能吗?如果是这样,我该怎么做呢?

谢谢!

3 个答案:

答案 0 :(得分:0)

使用正则表达式

String [] tests = {
                "DailyUse=Milk-Yogurt-Soap--Veggies=Beans-Carrot-Potato-Onions--DailyUse=Milk-Yogurt-Soap--Fruits=Apple-Banana-Grapes-Pears--DailyUse=Milk-Yogurt-Soap"
                ,"DailyUse=Milk-Yogurt-Soap"
                ,"DailyUse=Milk-Yogurt-Soap--DailyUse=Milk-Yogurt-Soap"
        };
        String key = "DailyUse";
        for (String test : tests) {
            String newItems = test;
            // Replace only one at beginning
            String regexp = "(^" + key + "=.+?(--|$))";
            while(newItems.matches(regexp)) {
                newItems = newItems.replaceAll(regexp, "");
            }
            // Regex to replace all other
            regexp = "(--" + key + "=.+?)(--|$)";
            newItems = newItems.replaceAll(regexp,"$2");
            System.out.println("Before "  + test);
            System.out.println("After " + newItems);
        }

根据评论更新

答案 1 :(得分:0)

试试这个。

public static void main(String[] args) {
    String items = "Veggies=Beans-Carrot-Potato-Onions--DailyUse=Milk-Yogurt-Soap--Fruits=Apple-Banana-Grapes-Pears";
    String[] newItems = items.split("--");
    System.out.println(newItems[0] + "--"+ newItems[2]);

}

答案 2 :(得分:0)

我试图将DailyUse元素放在第一,第二和第三位置,这段代码似乎有效。我认为它可以改进,但这是一个想法。

    String items = "DailyUse=Milk-Yogurt-Soap--Veggies=Beans-Carrot-Potato-Onions--Fruits=Apple-Banana-Grapes-Pears";
    String result = "";

    if (items.contains("--DailyUse=")){     // not in first position
        String[] a = items.split("--DailyUse=");

        result = a[0];

        if (a[1].contains("--")){       // Daily use is not the last element
            String[] b = a[1].split("--");
            result = result + "--" + b[1] ;
        }

    }
    else if (items.contains("DailyUse=")){      // first position

        String[] b = items.split("--");
        result =  items.replace(b[0]+"--", ""); // Delete the dailyuse part

    }