PDA

View Full Version : مبتدی: جدا سازی تکست بعد از کاراکتر مشخص در ریچ باکس



arashdj
چهارشنبه 13 فروردین 1399, 17:26 عصر
سلام
اگرممکن هست راهنمایی کنید چطور میتونم بعداز کاراکتر <date> هر چیزی که بعد از ان هست داخل یک تکست باکس جدا برود
این تکست داخل ریچ باکس هست


A <date> IMAGE.bin
CAD <date> num1.text
CAD <date> num2-2.text
BAG <date> arash

قسمت هایی که بعد از <date> هست داخل تکست جدا برود با توجه به اینکه فضای خالی یا اسپیس بعد از <date> متغیر هست

ممنون میشم اگر کدی به نظر مفید تر هست ارائه بدین

the king
چهارشنبه 13 فروردین 1399, 18:37 عصر
سلام
اگرممکن هست راهنمایی کنید چطور میتونم بعداز کاراکتر <date> هر چیزی که بعد از ان هست داخل یک تکست باکس جدا برود
این تکست داخل ریچ باکس هست


A <date> IMAGE.bin
CAD <date> num1.text
CAD <date> num2-2.text
BAG <date> arash

قسمت هایی که بعد از <date> هست داخل تکست جدا برود با توجه به اینکه فضای خالی یا اسپیس بعد از <date> متغیر هست

ممنون میشم اگر کدی به نظر مفید تر هست ارائه بدین
طبعا انجام اینجور تفکیک ها با Regex که میتونه رشته رو به گروه های مختلف تفکیک کنه خیلی ساده است.
با فاصله :

var input = richTextBox1.Text;
var r = new System.Text.RegularExpressions.Regex("^[\\w ]*\\<date\\>(?<text>.*)$"
, System.Text.RegularExpressions.RegexOptions.Multil ine);
var output = r.Replace(input, "${text}");
richTextBox2.Text = output;


بی فاصله :

var input = richTextBox1.Text;
var r = new System.Text.RegularExpressions.Regex("^[\\w ]*\\<date\\>\\s*(?<text>.*)\\s*$"
, System.Text.RegularExpressions.RegexOptions.Multil ine);
var output = r.Replace(input, "${text}");
richTextBox2.Text = output;


اون ^ یعنی شروع سطر یا رشته.
اون *[ w\\] برای A و CAD و BAG و ... به همراه فاصله های بعد اش.
اون <\\date>\\ هم که همون <date> ئه.
اون (*.<text>؟) یعنی هر چی که بعد از <date> نوشته شده (شامل کاراکتر های فاصله) که اسمشون رو text میذاریم.
اون *s\\(*.<text>؟)*s\\ یعنی هر چی که بعد از <date> نوشته شده (کاراکتر های فاصله قبل و بعدش رو جزو text بحساب نمیاریم)
اون $ یعنی انتهای سطر یا رشته.

arashdj
چهارشنبه 13 فروردین 1399, 18:55 عصر
ممنون توضیح خوبی بود ولی خروجی هنوز روی ریچ باکس میره داخل تکست جدا نمیره151523

the king
چهارشنبه 13 فروردین 1399, 19:11 عصر
ممنون توضیح خوبی بود ولی خروجی هنوز روی ریچ باکس میره داخل تکست جدا نمیره151523
با Split تفکیک شون کنید :

private void button1_Click(object sender, EventArgs e)
{
var input = richTextBox1.Text;
var r = new System.Text.RegularExpressions.Regex("^[\\w ]*\\<date\\>(?<text>.*)$"
, System.Text.RegularExpressions.RegexOptions.Multil ine);
var output = r.Replace(input, "${text}");
richTextBox2.Text = output;
var lines = output.Split(new string[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
for (var i = 0; i < lines.Length; i++)
{
Controls["textBox" + (i + 1)].Text = lines[i];
}
}

arashdj
چهارشنبه 13 فروردین 1399, 19:23 عصر
سپاس فراوان عالی
یک سوال کوچک داشتم و اینکه اگر قبل A و CAD و BAG حرفی دیگر با فاصله باشه یا عددی یا کاراکتر اون چطور خذف میشه

ARASH -13 CAD <date> num1.text
A-RASH 10 BAG<date> num2.text

the king
چهارشنبه 13 فروردین 1399, 19:46 عصر
سپاس فراوان عالی
یک سوال کوچک داشتم و اینکه اگر قبل A و CAD و BAG حرفی دیگر با فاصله باشه یا عددی یا کاراکتر اون چطور خذف میشه

ARASH -13 CAD <date> num1.text
به شکل های مختلف میشه الگوی Regex رو تغییر داد ولی کلی ترین حالت اینه که بگیم قبل <date> ئه *. باشه، *. یعنی هر جور رشته ای به هر طولی.

151524