如何从 SharedPreferences 中删除一些包含字符串的键?

can*_*nel 3 android key sharedpreferences

我的 Android SharedPreferences 是:

核心价值

约翰,美国

xxxpeter,英国

路易斯,墨西哥

xxxangel,意大利

杜邦,法兰

xxxcharles,belg

...

更多带有 xxxname 的行

...

如何删除包含(或以 xxx 开头)的键/值。这是我到目前为止得到的:

public void Deletekeyxxx() {
    final SharedPreferences.Editor sped = sharedPreferences.edit();     
    if(sped.contains("xxx")){
      sped.remove(sped.contains("xxx"));
    }
    sped.commit();
 }
Run Code Online (Sandbox Code Playgroud)

作品!谢谢本 P。

public void Deletekeyxxx() { 
    final SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();

    Map<String, ?> allEntries = sharedPreferences.getAll();
    for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
        String key = entry.getKey();
        if (key.contains("xxx")) {
           sharedPrefsEditor.remove(key);
        }
      sharedPrefsEditor.commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ben*_* P. 5

您可以使用SharedPreferences.getAll()来检索Map<String,?>,然后使用Map.keySet()来迭代键。也许是这样的:

private void removeBadKeys() {
    SharedPreferences preferences = getSharedPreferences("Mypref", 0);
    SharedPreferences.Editor editor = preferences.edit();

    for (String key : preferences.getAll().keySet()) {
        if (key.startsWith("xxx")) {
            editor.remove(key);
        }
    }

    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)