مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

regular format

  • پنجشنبه 23 اردیبهشت 1395
  • 18:48
تشکر میکنم

با سلام خدمت تمامی برنامه نویسان

من به یک format نیاز دارم که text  های که بین دو تا # و همینطور بین دوتا  | هست رو برگردونه مثل متن زیر

 

# این یک متن تستی است#

| این یک متن تستی هست |

ممنونم . لطفا سریع پاسخ بدید خیلی لازمه

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • پنجشنبه 23 اردیبهشت 1395
  • 19:21

با سلام

تابع زیر سه ورودی می گیرد که وردی اول متن شما ، ورودی دوم کاراکتر شروع استخراج و ورودی سوم کاراکتر اتمام استخراج را مشخص میکند

string ExtractBetween(string text, string start, string end)
        {
            int iStart = text.IndexOf(start);
            iStart = (iStart == -1) ? 0 : iStart + start.Length;
            int iEnd = text.LastIndexOf(end);
            if (iEnd == -1)
            {
                iEnd = text.Length;
            }
            int len = iEnd - iStart;

            return text.Substring(iStart, len);
        }

نحوه استفاده از تابع به شکل زیر است

ExtractBetween("|این یک متن تستی است|", "|", "|")

 

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • پنجشنبه 23 اردیبهشت 1395
  • 19:40

ممنونم دوست عزیز ولی من چیزی شبیه زیر میخوام که یجای دیگه داخل کد هام استفاده کردم . این کد هرچیزی که بین {} باشه رو در قالب ارایه برمیگردونه

public static List<string> SplitWithRegex(this string value, string spliter, string lchar, string Rchar)
        {
            List<string> data = new List<string>();
            var regex = new Regex(spliter);
            var matches = regex.Matches(value);
            foreach (var match in matches)
            {
                string v = (match.ToString().Replace(lchar, null));
                v = v.Replace(Rchar, null);
                data.Add(v);
            }
            return data;
        }

که تابع بالا به صورت زیر صدا زده میشه

var partlist = text.SplitWithRegex("{.*?}", "{", "}");

الان من چیزی شبیه فرمت زیر و میخوام

{.*?}

 

کاربر سایت

افشین ایمانی زاده

عضویت از 1393/12/24

  • پنجشنبه 23 اردیبهشت 1395
  • 20:26

این تابع تمام رشته های که بین دو کاراکتری که بهش معرفی میشه رو برمیگردونه

private IEnumerable<string> GetSubStrings(string input, string start, string end)
        {
            Regex r = new Regex(Regex.Escape(start) + "(.*?)" + Regex.Escape(end));
            MatchCollection matches = r.Matches(input);
            foreach (Match match in matches)
                yield return match.Groups[1].Value;
        }

نحوه دسترسی به تابع

 var allMatchResults = GetSubStrings("|متنی تستی سه| برنامه نویسان  |متن تستی دو| |متن تستی یک|", "|", "|");

حرکت بین اعضای بازگشتی از تابع

foreach (var item in allMatchResults)
            {
                
            }

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)