1
我想讀取VCard 4.0文件。VCard 4.0電話正則表達式?
我使用這個示例。
但是當我爲這個文件使用這個解決方案。
BEGIN:VCARD
VERSION:4.0
N:Gump;Forrest;;;
FN: Forrest Gump
ORG:Bubba Gump Shrimp Co.
TITLE:Shrimp Man
PHOTO:http://www.example.com/dir_photos/my_photo.gif
TEL;TYPE=work,voice;VALUE=uri:tel:+1-111-555-1212
TEL;TYPE=home,voice;VALUE=uri:tel:+1-404-555-1212
ADR;TYPE=work;LABEL="42 Plantation St.\nBaytown, LA 30314\nUnited States of America"
:;;42 Plantation St.;Baytown;LA;30314;United States of America
EMAIL:[email protected]
REV:20080424T195243Z
END:VCARD
沒有找到手機參數 - 比如,我用這個正則表達式的電話號碼:
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace;
regex = new Regex(@"(\n(?<strElement>(TEL)) (;*(?<strAttr>(HOME|WORK)))* (;(?<strType>(VOICE|CELL|PAGER|MSG|FAX)))* (;(?<strPref>(PREF)))* (;[^:]*)* (:(?<strValue>[^\n\r]*)))", options);
mc = regex.Matches(s);
if (mc.Count > 0)
{
Phones = new Phone[mc.Count];
for (int i = 0; i < mc.Count; i++)
{
m = mc[i];
Phones[i].number = m.Groups["strValue"].Value;
ss = m.Groups["strAttr"].Value;
if (ss == "HOME")
Phones[i].homeWorkType = HomeWorkType.home;
else if (ss == "WORK")
Phones[i].homeWorkType = HomeWorkType.work;
if (m.Groups["strPref"].Value == "PREF")
Phones[i].pref = true;
ss = m.Groups["strType"].Value;
if (ss == "VOICE")
Phones[i].phoneType = PhoneType.VOICE;
else if (ss == "CELL")
Phones[i].phoneType = PhoneType.CELL;
else if (ss == "PAGER")
Phones[i].phoneType = PhoneType.PAGER;
else if (ss == "MSG")
Phones[i].phoneType = PhoneType.MSG;
else if (ss == "FAX")
Phones[i].phoneType = PhoneType.FAX;
}
}
但在空strAttr的價值,strType。
如何爲這些設置正則表達式?