Формат для полей vcard: KEY[;Attribute]:VALUE[;ATTRIBUTE]
. Это похоже на опечатку в X-CUSTOMFIELD и должно читаться как X-CUSTOMFIELD:5555
Затем вы можете использовать line.split(":")
в каждой строке, чтобы получить ключи и значения.
EDIT
Сначала я прочитал бы все строки из файла / сообщения и сохранил их в виде ключа / значения в Hashtable (HashMap недоступен на Android ...). Используйте функцию разделения, о которой я упоминал выше, чтобы разделить строку на ключ и часть значения.
После того, как это будет сделано, просто спросите хеш-таблицу о значении ключа "X-CUSTOMFIELD", и оно должно вернуть "5555". (Предполагая, что вы исправили формат vcard, я все еще уверен, что строка X-CUSTOMFIELD недействительна!)
РЕДАКТИРОВАТЬ 2
Если vcard допускает дублирование ключей, вы все равно можете использовать хеш-таблицу в качестве внутренней модели vcard, но значение должно быть типа List<String>
, а не String
, и значения vcard добавляются в этот список, например: 1022 *
Hashtable<String, List<String>> vcard = new Hashtable<String, List<String>>();
for (String line:lines) { // assuming lines is an array or collection with all rows
String keyValuePair = line.split(":");
List<String> values = vcard.get(keyValuePair[0]);
if (values == null) {
// first value for this key - need to create the list
values = new ArrayList<String>();
vcard.put(keyValuePair[0], values);
}
values.add(keyValuePair[1]);
}
(непроверенный - если он не компилируется, обрабатывайте его как псевдокод ;-))