با سلام خدمت تمامی برنامه نویسان
من به یک format نیاز دارم که text های که بین دو تا # و همینطور بین دوتا | هست رو برگردونه مثل متن زیر
# این یک متن تستی است#
| این یک متن تستی هست |
ممنونم . لطفا سریع پاسخ بدید خیلی لازمه
با سلام
تابع زیر سه ورودی می گیرد که وردی اول متن شما ، ورودی دوم کاراکتر شروع استخراج و ورودی سوم کاراکتر اتمام استخراج را مشخص میکند
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("|این یک متن تستی است|", "|", "|")
ممنونم دوست عزیز ولی من چیزی شبیه زیر میخوام که یجای دیگه داخل کد هام استفاده کردم . این کد هرچیزی که بین {} باشه رو در قالب ارایه برمیگردونه
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("{.*?}", "{", "}");
الان من چیزی شبیه فرمت زیر و میخوام
{.*?}
این تابع تمام رشته های که بین دو کاراکتری که بهش معرفی میشه رو برمیگردونه
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) { }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)