مشکل کاراکترهای ویژه مثل نقطه و ویرگول
سلام.
میخوام در یک متن یک کلمه رو جستجو کنم و کلمهای دیگه به جاش جایگزین کنم. مثلاً میخوام به جای کلمۀ «دیوار» کلمۀ «در» رو جایگزین کنم. این مسأله خیلی ساده به نظر میرسه ولی وقتی از replace رشته در سیشارپ استفاده میکنم، اگر «دیوارها» رو پیدا کنه تبدیل به «درها» میکنه و این مطلوب نیست. طبیعتاً برای حل این مشکل باید به جای «%دیوار%» دنبال دیوار با دو طرف کلمه space بگردم ولی مشکل اینجاست که ممکنه بعد یا قبل از «دیوار» بلافصله کاراکترهای ویژه مثل نقطه یا ویرگول باشد و غیره باشد که این باعث میشه که این حالت رو پیدا نکنه.
چه کار میشه کرد؟ آیا استفاده از RegEx کمک میکنه؟ اگر بله چطور؟
نقل قول: مشکل کاراکترهای ویژه مثل نقطه و ویرگول
با سلام
بدلیل اینکه توضیحتون زیاد واضح نیست، جواب نگرفتید
مثلاً اگر بعد از دیوار (،) گذاشته شود کلاً چنین نگارشی غلط هست => دیوار، ها
چند جمله از مشکلات بوجود اومده مثال بزنید تا بهتر بشه راهنمایی کرد
موفق باشید
نقل قول: مشکل کاراکترهای ویژه مثل نقطه و ویرگول
نقل قول: مشکل کاراکترهای ویژه مثل نقطه و ویرگول
نقل قول:
نوشته شده توسط
aliahmadi
سلام.
میخوام در یک متن یک کلمه رو جستجو کنم و کلمهای دیگه به جاش جایگزین کنم. مثلاً میخوام به جای کلمۀ «دیوار» کلمۀ «در» رو جایگزین کنم. این مسأله خیلی ساده به نظر میرسه ولی وقتی از replace رشته در سیشارپ استفاده میکنم، اگر «دیوارها» رو پیدا کنه تبدیل به «درها» میکنه و این مطلوب نیست. طبیعتاً برای حل این مشکل باید به جای «%دیوار%» دنبال دیوار با دو طرف کلمه space بگردم ولی مشکل اینجاست که ممکنه بعد یا قبل از «دیوار» بلافصله کاراکترهای ویژه مثل نقطه یا ویرگول باشد و غیره باشد که این باعث میشه که این حالت رو پیدا نکنه.
چه کار میشه کرد؟ آیا استفاده از RegEx کمک میکنه؟ اگر بله چطور؟
توی پردازش رشته هیچ چیز قدرتمندتر از regex نیست. پس همین رو ادامه بده
نقل قول: مشکل کاراکترهای ویژه مثل نقطه و ویرگول
برای مثال چیزی به ذهن من میرسه کد زیر هست. ولی نمیگم 100% درسته. باید حالتهایی که میخوای رو تست کنی.
string str="سلام به دیواریهای. عزیز";
var regex = new Regex(@"\s*دیوار\w*[.،:;]*\s*");
var match = regex.Match(str);
if (match.Success)
Console.WriteLine(str.Substring(match.Index, match.Length));