PDA

View Full Version : سوال: خواندن یک خط خاص



hosseinghaheri
شنبه 14 تیر 1393, 19:11 عصر
سلام به همه دوستان ،
دو تا سوال دارم !
1) چطوری می تونم مقدار یک متغییر را برابر با مثلا خط 10 یه تکست باکس کنم؟
2) چطوری می تونم توی اون خطی که مقدارش را گرفتم دنبال یک کلمه بگردم که بیبینم ایا اون کلمه توی اون خط وجود داره یا نه؟؟
ممنون میشم توضیح بدید

aliagamon
شنبه 14 تیر 1393, 19:51 عصر
سوال یکتون :
چنتا روش دارین ... اگه دقیقا اونی که پرسیدین رو میخواین این کدشه :(فکر کردم با فایل کار میکنین :لبخند:مورد دوم جوابتونه با split ... )

StreamReader sr=new StreamReader("text.txt");
for (int i = 0; i < 9; i++)
{
sr.ReadLine();
}
textBox1.Text = sr.ReadLine();

اما بهتره همه ی خط هارو بخونین و بریزین تو یه لیست .... (یا Split کنین تو یه ارایه) اونطوری به هر خطی که بخواین به راحتی میتونین دسترسی پیدا کنین ... تو ویرایش و ذخیره هم راحت ترین :

StreamReader sr=new StreamReader("text.txt");
string temp = sr.ReadToEnd();
var lines = temp.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries);
textBox1.Text = lines[9];

سوال دوم :

string str = "salam khobi khobam!";
if(str.Contains("khobi"))
{
MessageBox.Show("ty!");
}

Hadoop
یک شنبه 15 تیر 1393, 04:44 صبح
اون روش بالایی هم که توی حلقه فور میاد تا سر اون خط رو از اول فایل میخونه باید جواب بده
ولی پرفورمنس نداره و بهینه نیست اگه مثلا این کار رو بخوای بیست بار انجام بدی... یه بار بره خط ۱۰ ... دفعه بعد بگی بره خط ۵۵ ... و .... هی هر دفعه داره از اول تکراری تکراری میخونه


به نظر من یک بار برای همیشه با دستور File.ReadAllLines بخونش http://msdn.microsoft.com/en-us/library/s2tte0y1(v=vs.110).aspx این خروجی میده توی یک آرایه

حالا دیگه آرایه رو داری .. میخوای بری خط ۱۰ .. دسترسی پیدا کن به خونه ۹ آرایه ... دیگه آرایه است دیگه بلدی که ...


ویرایش: الان نگاه کردم اون کدهای بالا یک هم یک روش دومی داره مشابه همینه . همونم میشه

shahryari
یک شنبه 15 تیر 1393, 09:01 صبح
برای سوال شماره یک تابعی برای اینکار نوشتم که دوتا آرگومان داره ، اولی مسیر فایل و دومی شماره خط

public string getLine(string path, int lineNum)
{

var sr = File.ReadAllLines(path);
int num = lineNum - 1;
if (num > sr.Length)
{
return "N/A";
}
else
{
return sr[num];
}
}