1

VCard ファイルを読みたいです。

このサンプルを使用します。

しかし、このファイルにこのソリューションを使用すると。

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:forrestgump@example.com
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);

ただし、strAttr、strType の値は空です。

これらの正規表現を設定するには?

4

3 に答える 3

1

アドレスには次の正規表現を使用します。

   regex = new Regex(@"(?<strElement>(ADR)) (;(?<strAttr>[^\n\r]*))? (:(?<strPo>([^;]*)))  (;(?<strBlock>([^;]*)))  (;(?<strStreet>([^;]*)))  (;(?<strCity>([^;]*))) (;(?<strRegion>([^;]*))) (;(?<strPostcode>([^;]*)))(;(?<strNation>[^\n\r]*))", options);
于 2012-11-17T10:30:48.887 に答える
1

車輪を再発明する代わりに、既存のライブラリを見つけようとすることができます。これは例えば

于 2012-11-15T07:45:49.433 に答える
0

どのようなオプションを使用しますか?

を使用しない場合IgnorePatternWhitespace、式のスペースが問題になります。

;別の問題は、 「VOICE」の前にチェックすることですが、文字列には,

*これらすべての量指定子が本当に必要ですか? 何かをオプションにしたい場合は、?量指定子を使用することをお勧めします。これは 0 回または 1 回だけ一致します。

于 2012-11-15T07:12:36.187 に答える