PDA

View Full Version : حرفه ای: حذف رشته از فایل متنی



h_jafarnezhad
دوشنبه 23 شهریور 1394, 09:43 صبح
سلام با استفاده از کد زیر فایل رو خوندم و محتویاتش رو داخل rich text ریختم

OpenFileDialog openfile = new OpenFileDialog();
openfile.Filter = "Text Files (.txt)|*.txt";
openfile.FilterIndex = 1;
if (openfile.ShowDialog() == DialogResult.OK)
{
textBox1.Text = openfile.FileName;
TextReader tr = new StreamReader(openfile.FileName);
richTextBox1.Text = tr.ReadToEnd ();
tr.Close();
}


و با دستور زیر میخوام دو کاراکتر اول تمام سطر ها رو حذف کنم ولی دستور فقط روی سطر اول اعمال میشه

int count = Convert .ToInt32 ( textBox2.Text);
TextReader tr = new StreamReader(textBox1.Text );
richTextBox1.Text = tr.ReadToEnd().Remove (0,count );
tr.Close();

به نظر شما من باید چه طوری کد رو اصلاح کنم

nunegandom
دوشنبه 23 شهریور 1394, 13:59 عصر
با سلام
using System.Text.RegularExpressions;
string input = "masalan hamun textbox1.Text";
string pattern = ""; // chizi ke Qarare jai gozin she ke tohi hastesh inja iani hichi
string replace = ","; //chizi ke Qarare peida konim
string result= Regex.Replace(input,pattern,replace);

h_jafarnezhad
دوشنبه 23 شهریور 1394, 16:32 عصر
میخوام فقط دو کاراکتر اول هر سطر حذف بشه دستور ریپلیس این کار رو نمیکنه

nunegandom
دوشنبه 23 شهریور 1394, 17:39 عصر
شما با همون دستور میتونی سطر به سطر بخونی و این عملیات رو روش انجام بدی

h_jafarnezhad
دوشنبه 23 شهریور 1394, 18:14 عصر
ببینین مثلا 9811119811 رو داریم من می خوام 98 اول حذف بشه ولی به 98 دوم کاری نداشته باشه. دستور replace 98 دوم رو هم حذف میکنه که من نمیخوام این اتفاق بیفته

nunegandom
دوشنبه 23 شهریور 1394, 18:32 عصر
اینم پترنش
^.{2}

h_jafarnezhad
دوشنبه 23 شهریور 1394, 19:01 عصر
این پترن رو هم تست کردم هیچ کاری انجام نداد

اینم کدی که زدم


string input = richTextBox1 .Text ;
string pattern = "^.{2}";
string replace = textBox2.Text;
string result= Regex.Replace(input,pattern,replace);
richTextBox2.Text = result;

Salar Ashgi
دوشنبه 23 شهریور 1394, 23:19 عصر
خیلی ساده :


string res = "";
foreach (string s in richTextBox1.Lines)
res += s.Substring(2) + "\n";
richTextBox1.Text = "";
richTextBox1.Text = res;


عکس اول :



135225

عکس نتیجه :

135226

البته به ده ها روش این مساله قابل حله ، این یکیش بود.

موفق باشید ./

h_jafarnezhad
سه شنبه 24 شهریور 1394, 07:41 صبح
سلام کد رو چک کردم ولی

{"startIndex cannot be larger than length of string.\r\nParameter name: startIndex"}
این خطا رو میده

Salar Ashgi
سه شنبه 24 شهریور 1394, 07:53 صبح
سلام کد رو چک کردم ولی

{"startIndex cannot be larger than length of string.\r\nParameter name: startIndex"}
این خطا رو میده

کد ارائه شده کاملا درسته .

شما کدتون رو قرار بدید بررسی بشه ، حتما یه جاش مشکلی داره./

h_jafarnezhad
سه شنبه 24 شهریور 1394, 08:13 صبح
string res = "";
foreach (string txt in richTextBox1.Lines)
res += txt.Substring(2) + "\n";
richTextBox2.Text = "";
richTextBox2.Text = res;

nunegandom
سه شنبه 24 شهریور 1394, 14:35 عصر
خوب کد منم تست شده بود و درست بود :|