我想替换列表中显示名称中的所有逗号,如何操作?

 for (int i = 0; i < contacts.size(); i++) {
                if(contacts.get(i).getDisplayName().contains(",")){
                    contacts.get(i).getDisplayName().replace("," , " " );
                    contacts.notify();
                }
            }

最佳答案

好吧,你需要设置显示名称,我想。目前您正在调用String.replace来创建一个新的字符串,但是作为不可变的字符串,现有的显示名称不会更改。我想你真的想:

for (Contact contact : contacts) {
    String displayName = contact.getDisplayName();
    if (displayName.contains(",")) {
        contact.setDisplayName(displayName.replace(",", " ");
        contacts.notify();
    }
}

或者可能更好(单一通知):
boolean anyChanged = false;
for (Contact contact : contacts) {
    String displayName = contact.getDisplayName();
    if (displayName.contains(",")) {
        contact.setDisplayName(displayName.replace(",", " ");
        anyChanged = true;
    }
}
if (anyChanged) {
    contacts.notify();
}

请注意,除非使用列表索引而不是从列表中获取值,否则如果使用如上所述的增强for循环,则代码会更干净。

10-07 19:31
查看更多