PDA

View Full Version : رفتن به خط جدید در فایل



yekta2010
پنج شنبه 17 اسفند 1391, 12:33 عصر
یه برنامه سی شارپ دارم که ازفایل تکست می خونه میخوام با دیدن یه کاراکتری که مد نظرم هست اون خط رو رد کنه و بره سر خط بعدی .اگه ممکنه من رو راهنمایی کنید چه کدی باید استفاده کنم .

veniz2008
پنج شنبه 17 اسفند 1391, 12:41 عصر
سلام.
تاپیک زیر رو ببنید.
http://barnamenevis.org/showthread.php?370224-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%D9%81%D8%A7%DB%8C%D9%84-text-%D8%A8%D9%87-SQL-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%DA%A9%D8%AF&p=1634806#post1634806

yekta2010
شنبه 19 اسفند 1391, 08:34 صبح
من میخوام تو فایل وقتی کاراکتری رو دیدم برم خط بعد.با تاپیکی که معرفی کردید جواب سوالم رو نگرفتم اگه ممکنه بیشتر توضیح بدید .
یک سوال دیگه هم دارم و اینکه این فایل من فارسی هست و من وقتی از فایل میخونم یکسری کاراکترهای مبهم به من میده که اون حروف معادل حروف فارسی که تو فایل من وجود داره نیست.اگه کسی میدونه لطفا راهنمایی کنه چطور میتونم از فایل فارسی بخونم به صورت کاراکتر کاراکتر.مثلا سلام رو میخوام به این صورت بخونم . س ل ا م

veniz2008
شنبه 19 اسفند 1391, 09:08 صبح
واسه بخش اول (اگر انتهای هر خط با enter مشخص شده باشه از 'n\' و اگر از نقطه استفاده شده از '.' استفاده کنید).

StreamReader sr = new StreamReader("d:\\test.txt");
string allchar = sr.ReadToEnd();
sr.Close();
string[] records = allchar.Split('\n');
for (int i = 0; i < records.Length; i++)
{
if (!records[i].Contains('a'))
{
//اگر هر خط شامل کاراکتر مورد نظر نباشه
}
else
{
//اگر خط، شامل اون کاراکتر باشه اون خط رو رد میکنه و به سراغ خط بعد میره
}
}
یعنی چی حروف معادل نیست؟. حروف بی ربط می بینی؟(مثل حالت ویروسی یا علامت سوال به شما میده؟)

yekta2010
شنبه 19 اسفند 1391, 09:22 صبح
ممنون از راهنماییتون میشه کد بالا رو یه مقدار توضیح بدید؟
منظورم همون علامت سوال هستش

veniz2008
شنبه 19 اسفند 1391, 09:29 صبح
یه حرف N قبل از ورودی ها بذار. مثلا :

SqlCommand cmd = new SqlCommand("SELECT * FROM tell where myname = N'" + textBox1.Text + "'");
توصیه میکنم از روش بالا در برنامه هاتون استفاده نکنید(بخاطر مسائل امنیتی برنامه) و از روش ارسال پارامترها کمک بگیرید.

yekta2010
شنبه 19 اسفند 1391, 09:46 صبح
ببینید میخوام از فایل بخونم مثلا به روش زیر :

FileStream fs = new FileStream("F:\\arshad\\ebhamzodayee\\Collection UNI.txt",FileMode.Open);
for (int i = 0; i < fs.Length; i++)
{
char ch=(char)(fs.Seek(i,SeekOrigin.Begin));
if (ch == ' ')//اگر کاراکتر مورد نظر بود
{
//بره خط بعد
}
else//اگر نبود
{
//اعمال مورد نظر}
حالا مشکلم اینه که مقداری که تو ch قرار میگیره مفهوم نیست یا همون علامت سواله چون فایلم فارسیه
و اینکه در اون قسمت که میخوام برم خط بعد چطوری برم

veniz2008
شنبه 19 اسفند 1391, 11:55 صبح
اگر فایلی که در اختیار دارید حروف داخلش علامت سوال هست که هیچی گاوتون زاییده ولی اگه فایلتون مشکلی نداره ولی موقع خوندن تبدیل به علامت سوال میشه یه راهش همونه که خدمتتون گفتم. البته میتونید فونت رو هم بر روی tahoma تنظیم کنید شاید مشکل برطرف بشه (قبل از دست زدن به فونت یه کپی از فایل بردارید که مشکلی واستون ایجاد نشه).
اما در مورد مشکلتون. قضیه رو پیچیده نکنید. شما باید تمام خط های برنامه رو داشته باشید و بعد در هر خط چک کنید که آیا کاراکتر مورد نظرتون وجود داره یا نه.اگر وجود نداشت که عمل مورد نظرتون رو انجام میدید و اگر وجود داشت که حلقه خودش میره سراغ خط بعدی. یادتون نره که خودتون هم باید انعطاف پذیر باشید و کد رو بسته به نیازتون تغییر بدید.
موفق باشید.

yekta2010
شنبه 19 اسفند 1391, 14:36 عصر
SqlCommand cmd = new SqlCommand("SELECT * FROM tell where myname = N'" + textBox1.Text + "'");
در مورد توضیحی که دادیددر رابطه با فایل من که فا رسی هست
این دستور مربوط به پایگاه داده هست من میخوام فایل رو که میخونم درست بخونم توی خوندن فایل مشکل دارم

Mahmoud.Afrad
شنبه 19 اسفند 1391, 16:56 عصر
برای چک کردن اینکه اون خط حاوی کاراکتر هست یا نه از متد contains استفاده کنید:

using (StreamReader sr = new StreamReader("F:\\arshad\\ebhamzodayee\\Collection UNI.txt", Encoding.UTF8))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (!line.Contains(' '))
{
//اعمال مورد نظر
}
}
}

linux
شنبه 19 اسفند 1391, 22:35 عصر
یه برنامه سی شارپ دارم که ازفایل تکست می خونه میخوام با دیدن یه کاراکتری که مد نظرم هست اون خط رو رد کنه و بره سر خط بعدی .اگه ممکنه من رو راهنمایی کنید چه کدی باید استفاده کنم .
یک نمونه از فایلتون را می گذاشتید.