PDA

View Full Version : استخراج شماره موبایل های ایرانی



بیتا حکمت
جمعه 23 مرداد 1394, 17:46 عصر
سلام ، میخوام از داخل رشته تمام شماره موبایل ها رو اکسترکت کنم ، اکثر مثالهای این لینک (http://stackoverflow.com/questions/6761698/regular-expression-for-iranian-mobile-phone-numbers)رو تست کردم اما نتیجه نداد ، شاید کد رو اشتباه نوشتم .

کلاس تعریف شده برای استخراج شماره موبایل



class mobileExtracter
{

public static void Extractmobile(string inFilePath, string outFilePath)
{
// string data = File.ReadAllText(inFilePath); //read File
//instantiate with this pattern
string data = inFilePath;

Regex moblRegex = new Regex( @"09(1\d|3[1-9])-\d{3}-\d{4}$",
RegexOptions.IgnoreCase);
//find items that matches with our pattern
MatchCollection emailMatches = moblRegex.Matches(data);

StringBuilder sb = new StringBuilder();

foreach (Match emailMatch in emailMatches)
{
sb.AppendLine(emailMatch.Value);
}
//store to file
File.WriteAllText(outFilePath, sb.ToString());
}
}




نحوه استفاده :



mobileExtracter.Extractmobile("my name is c# ,phone number:09351234567 or 09151234567", "phon.txt");




تو مسیر جاری فایل ExE فایل phon ساخته میشه اما هیچ شماره موبایلی داخلش نیست

aliasghar2
جمعه 23 مرداد 1394, 17:53 عصر
mobileExtracter.Extractmobile("my name is C#‎‎‎ ,phone number:09351234567 or 09151234567", "phon.txt");
خب معلومه اشتباه استفاده کردی
پارامتر اول ادرس یه فایل تکست رو میگیره نه شماره تلفن

بیتا حکمت
جمعه 23 مرداد 1394, 17:56 عصر
خب معلومه اشتباه استفاده کردی
پارامتر اول ادرس یه فایل تکست رو میگیره نه شماره تلفن

نه اینطور نیست اگر دستورات داخل کلاس رو نگاه کنید، سطر هشتم منظورمه متوجه می شین که به این موضوع ارتباطی نداره ، البته کاش اسم اون پارامتر ورودی رو تغییر می دادم . اما در کل مشکلی از این لحاظ نیست . اون پارامتر به جای اینکه از داخل فایل خونده بشه از داخل برنامه یک رشته ارسال میشه

aliasghar2
جمعه 23 مرداد 1394, 18:08 عصر
نه اینطور نیست اگر دستورات داخل کلاس رو نگاه کنید، سطر هشتم منظورمه متوجه می شین که به این موضوع ارتباطی نداره ، البته کاش اسم اون پارامتر ورودی رو تغییر می دادم .

خط اول که کامنت شده بود رو ندیدیم
اون قسمت مربوط به Regix رو بد نوشته بودی تغییر دادم این شد کار کرد
System.Text.RegularExpressions.Regex moblRegex = new System.Text.RegularExpressions.Regex(@"09([0123])\d{8}",
System.Text.RegularExpressions.RegexOptions.Ignore Case);