こんにちは、私はvcardsを読む小さなアプリケーションがあります。奇妙な部分は、アドレスが決して読み取られないということです。私は使用しようとする小さなサンプルvcardを持っています。なぜアドレスタグは決してvcardから読み取られないのですか?
"BEGIN:VCARDN:Huster;Hugo;;TestAdmin;HHUADR;INTL;PARCEL;WORK:;;Musterstra�e 10;Musterstadt;Niede�sterreich;3587;AustriaADR;DOM;PARCEL;HOME:;;Husterstra�e 10;Husterstadt;Wien;8897;AustriaEMAIL;INTERNET:[email protected];INTERNET:[email protected]:Hugo GmbhTEL;WORK:12345678TEL;FAX;WORK:--342342TEL;CELL:45364321TEL;HOME:028560803TITLE:DeveloperURL;WORK:www.example.deURL:www.hug.atEND:VCARD"
、これは私がアドレスを使用しようと正規表現です::vCardのから正規表現の文字列
:だからここに私達は行く
@"(\n(?<strElement>(ADR))) (;*(?<strAttr>(HOME|WORK)))* (:(?<strPo>([^;]*))) (;(?<strBlock>([^;]*))) (;(?<strStreet>([^;]*))) (;(?<strCity>([^;]*))) (;(?<strRegion>([^;]*))) (;(?<strPostcode>([^;]*)))(;(?<strNation>[^\n\r]*))";
とコードIそれを使用する:例えば
case "ADR":
regex = @"(\n(?<strElement>(ADR))) (;*(?<strAttr>(HOME|WORK)))* (:(?<strPo>([^;]*))) (;(?<strBlock>([^;]*))) (;(?<strStreet>([^;]*))) (;(?<strCity>([^;]*))) (;(?<strRegion>([^;]*))) (;(?<strPostcode>([^;]*)))(;(?<strNation>[^\n\r]*))";
mc = regex.Matches(vCardLine);
if (mc.Count > 0)
{
for (int i = 0; i < mc.Count; i++)
{
VCardComponents.Address address = new VCardComponents.Address();
v.Addresses.Add(address);
m = mc[i];
ss = m.Groups["strAttr"].Value;
if (ss == "HOME")
address.HomeWorkType = VCardComponents.HomeWorkTypes.HOME;
else if (ss == "WORK")
address.HomeWorkType = VCardComponents.HomeWorkTypes.WORK;
address.POBox = m.Groups["strPo"].Value;
address.Ext = m.Groups["strBlock"].Value;
address.Street = m.Groups["strStreet"].Value;
address.Locality = m.Groups["strCity"].Value;
address.Region = m.Groups["strRegion"].Value;
address.Postcode = m.Groups["strPostcode"].Value;
address.Country = m.Groups["strNation"].Value;
}
}
break;
、ここで組織のために働くの正規表現:
@"(?<strElement>(ORG)) ((;(ENCODING=)?(?<strAttr>(QUOTED-PRINTABLE)))|(;CHARSET=UTF-?8))* (:(?<strORG>(([^;^\n\r]*(=\n\r)?)*[^;^\n\r]*[^;]*(\n\r)?)))(;(?<strDept>(([^;^\n\r]*(=\n\r)?)*[^;^\n\r]*[^;]*(\n\r)?)))?";
正規表現は常に同じパターンに従いますが、何らかの形でそれは常にそのNullのために働きません。そして私は理由を知りません。私はGoogleとcodeprojectのチュートリアルでそれを試しましたが、これまでのところ運がありませんでした。私は周りに図書館があることを知っているが、私は正規表現のものを使用するはずです。
あなたの時間のために、どんな助けや助言も素晴らしいことです。
私たちがより迅速にお手伝いできるように、コードを最小限に抑えることはできませんでしたか?私はあなたが提供した文字列に対してあなたの正規表現を試してみましたが、それはまったく文字列と一致しませんでした。 –
私はそれを最小限に抑えようとしました。このコードは、多くの場合のswitch文の一部です。 Mabey私はvcardが読み込まれるときに文字列を投稿する必要がありますか?私はちょうどそれを読み取るtextBox1.Text = File.ReadAllText(openFileDialog1.FileName); Mabey私はこのコードを投稿する必要がありますか? – opelhatza
ちょうど文字列、あなたがそれに対して実行する正規表現、一致していないが必要なもの。あなたは単純なvCard - 私は - 入力されていると思います。その下の正規表現は文字列と一致しません。 –