PDA

View Full Version : سوال: عبارات باقاعده در سی شارپ



niloofar13
یک شنبه 07 اردیبهشت 1393, 21:59 عصر
سلام من می خوام در یه برنامه عبارتهایی که با "می " شروع می شوند و بعد از آن یک فاصله است را تغییر داده و فاصله را از بین ببرم مثلا "می شود" به "میشود" تغییر پیدا کند. برای این کار از عبارات باقاعده استفاده کردم و یه الگو ساختم . مساله الان در جایگزینی هستش که عمل نمی کنه برای جایگزینی از دستور replace استفاده کردم به صورت
matn = Regex.Replace(matn, @"\bمی\b\s\b\w+\b", "$1$3");

ولی در هنگام جایگزینی به جای رشته موردنظر عبارت $1$3 را قرار می دهد. لطفا راهنمایی ام کنید.

omid nasri
یک شنبه 07 اردیبهشت 1393, 22:41 عصر
شما می تونی از خود متد Replay استفاده کنی برای مثال :


namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string a = richTextBox1.Text;
a = a.Replace("می ", "می");
richTextBox1.Text = a;
}
}
}

Mr.orange
یک شنبه 07 اردیبهشت 1393, 22:49 عصر
تمامی عباراتی که "می" دارند و یک فاصله بعدش دارند رو یا "می" جایگزین میکنه!! احتیاج به ساختار پیچده تری نیست!!


using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string input = "او گاهی در انجام کارهایش دچار شک می شود و می گویند که می شود";

string output = Regex.Replace(input, @"می\s", "می");

// Write the output.
Console.WriteLine(input);
Console.WriteLine(output);
}
}





پ.ن:
کد دوستمون رو ندیده بودم که گذاشتن.

niloofar13
دوشنبه 08 اردیبهشت 1393, 07:27 صبح
متشکرم مشکلم حل شد من خیلی تو نت دنبال مطلبی در مورد آموزش جایگزینی یک الگو با الگوی دیگه گشتم فقط یه مقاله انگلیسی پیدا کردم که اون هم مثالی نداره که قابل فهم باشه می خواستم ازتون خواهش کنم اگه در مورد این موضوع چیزی میدونید برام توضیح بدید .

Mr.orange
دوشنبه 08 اردیبهشت 1393, 13:40 عصر
من ویندوزی نیستم که بیشتر بتونم راهنمایی کنم

ولی در مورد regexp معمولا در تمامی موارد اصولش یکسانه؛ کافیه یکم تمرین کنید در این زمینه تا تجربه کافی رو بدست بیارید!

مهم اینه که به عبارات با قاعده تسلط داشته باشید و بتونید درکش کنید؛ دیگه باقیش استفاده از توایع امادست