در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

aras

کار با رشته ها و فایل ها در سی شارپ

سلام به همه اساتید بزرگوار



دوستان من یه فایل متنی دارم که شامل حروف و اعداد هستش در این فایل متنی هزاران سطر تعریف شده که ترکیبی از آدرس و شماره تلفن هستش و پشت سرهم قرارگرفته است ، من میخام یه برنامه بنویسم که تمامی شماره تلفن هایی که داخل این فایل ذخیره شده رو استخراج کنم ، به نظر اولین کاری که باید انجام بدم سطرهایی رو باید فراخوانی کنم که شامل "09" می باشد به عنوان مثال یکی از سطرهای من به شکل زیر می باشد.


 MiladMoradi0912356B841BB9650Tehran-HafteTir

دوستان من میخام خطوط رو تو متغییر بزارم و سپس تعیین کنم که عدد "09" در چه موقعیتی قرارگرفته یعنی اندیس اونو برگردونم مثلا اندیس 12 و 13 ، و سپس به برنامه بگم که کاراکترهای بعد از اندیس 13 رو هم بخونه اگه عدد بود که هیچی ادامه بده اما اگر به حرف B رسید هم کاراکتر B و هم کاراکتر قبلی خودشو که مثلا در اینجا 6 هستش رو حذف کنه سپس ادامه بده و اگر دوباره به حرف B رسید فرایند فوق رو تکرار کنه تا زمانی که طول رشته به 11 می رسد یعنی شماره تلفن کامل میشه یعنی این خروجی : 09123589650 دوستان چطوری باید این کارو انجام بدم آیا فرایند فوق فرایند استاندارد و خوبی هستش اگر نه ممنون میشم راه حل بهتر و بهینه تری پیشنهاد بدید که سریع بتونم ازش جواب بگیرم ضمن اینکه روش فوق فقط برای یه خط نیست به صورت کلی باید واسه هزاران خط در نظر بگیریم اگه روش خوبیه ممنون میشم راهنماییم کنید که چطوری باید پیاده سازی کنم اگه هم خیر بازم ممنون میشم ایده هاتون رو اینجا مطرح بفرمایید

لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.
حسین احمدی

سلام، وقت بخیر

اینکه گفتید فرآیند استاندارد هست یا نه منظورتون چیه؟ منظورتون ساختار فایل هست؟

کانال تلگرام: https://t.me/TOSINSOAhmadi
aras

ببینید من میخام فرایند فوق رو اجرا کنم دیگه نمیدونم باید چجوری و از کجا شروع کنم ممنون میشم راهنمایی کنید 

حسین رنجبر

با سلام

شما میتوانید با استفاده از (Regex.Matches(text, expr این کار را انجام بدهید.

متد های دیگر مثل 

Replace

Split هم هستند که میتوانید از آنها استفاده کنید.با استفاده از عبارات منظم یا با قاعده این کار را انجام دهید.

مثلا میتوانید تمام ایمیل های درون متن را با تنظیم کردن مقدار expr به متن زیر بدست آورید.

@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$

aras

ممنون از پاسختون ، ببینید من یه رشته با مقدار زیر دارم 

string text=loopoemsemicolonoem2BtestBBBexttext09123452103printerif

من میخام فقط شماره تلفن رو ازش جدا کنم یعنی درواقع میخام تمامی حروفی که قبل و بعد از شماره تلفن اومده رو حذف کنم ، ممنون میشم اول بگید که چطوری باید کاراکترهای قبل از عدد "09" رو پاک کنم و بعد از اینکه اون پاک شد طول رشته رو از اولین کاراکتر محاسبه کنه و زمانی که به 11 رسید و شماره کامل شد دیگه مابقی کاراکترهای بعد از  شماره رو در نظر نگیره ، اگه راه حل بهتری برای استخراج شماره دارید ممنون میشم ارائه بدید 

حسین رنجبر

 string text = "string text=loopoemsemicolonoem2BtestBBBexttext09123452103printerif";

            string[] mobile = Regex.Split(text, @"\D{5}");

            foreach (string value in mobile)

            {

                long number;

                if (long.TryParse(value, out number))

                {

                    Console.WriteLine(value);

                }

            }

            Console.ReadLine();

مهندس فقط یک Regex بهتر پیدا کن هر آنچه مد نظرته بزار

پاسخ شما
برای ارسال پاسخ خود وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....