PDA

View Full Version : سوال: استفاده از دستور split



f_g1348
یک شنبه 18 تیر 1391, 09:29 صبح
سلام دوستان
من یه textbox دارم که پر از کلمه می باشد و هر کلمه با یک اینتر از کلمه دیگر جدا شده حالا می خواهم این کلمات بصورت تک تک از textbox خوانده شود و در یک آرایه یک بعدی ریخته شود .
میگن با دستور split میشه ولی هرچی سرچ کردم پیدا نکردم
ممنون میشم کمکم کنید

ahmadreza517
یک شنبه 18 تیر 1391, 10:02 صبح
به نام تنها برنامه نویس هستی
سلام ,

از این قطعه کد استفاده کنید.


string string1 = "salam \n bar \n hame";
string[] words = string1.Split('\n');

foreach(string s in words)
{
MessageBox.Show(s);
}

f_g1348
یک شنبه 18 تیر 1391, 10:05 صبح
خوب دوست عزیز من فایل متنی گرفتم که کلمات را با اینتر از هم جدا میکنه و شاما 1000 کلمه می باشد و نمی توانم آن را از اول به این فرمتی که شما ارائه دادین بن.یسم

sirvan-me
یک شنبه 18 تیر 1391, 10:16 صبح
شما می تونید از دستور Split به صورت زیر استفاده کنی

private void btn_Split_Click(object sender, EventArgs e)
{
using (System.IO.StreamReader Sr = new System.IO.StreamReader(@"C:\Test.txt"))
{
textBox1.Text = Sr.ReadToEnd();
}

if (textBox1.Text != string.Empty)
{
string[] Words = textBox1.Text.Split('\n');
foreach (string Str in Words)
{
MessageBox.Show(Str);
}
}
}

f_g1348
یک شنبه 18 تیر 1391, 11:38 صبح
با سلام من از کد زیر استفاده کردم و تقریباً جواب داد فقط در انتهای هر کلمه یک r/ هم می گذارد
کسی راه حلی نداره واسه این ؟

string[] stopword = null;

stopword=textBox5.Text.Split('\n');

sirvan-me
یک شنبه 18 تیر 1391, 12:02 عصر
مطمئنید اینطور میشه !!! .. این برنامه که گذاشتم رو دان کنید ببینید ....
با ویژوال استادیو 2010 نوشتما ... حواست باشه

f_g1348
یک شنبه 18 تیر 1391, 12:23 عصر
دوست عزیز این برنامه درست کار می کنه ولی وقتی به جای MessageBox از یک آرایه یک بعدی استفاده می کنم و watch را می بینم در آخر هر کلمه یک r\ می گذارد لطفاً در صورت امکان با یک آرایه به عنوان خروجی چک شود .
با تشکر

sirvan-me
یک شنبه 18 تیر 1391, 14:05 عصر
دوست عزیز این برنامه درست کار می کنه ولی وقتی به جای MessageBox از یک آرایه یک بعدی استفاده می کنم و watch را می بینم در آخر هر کلمه یک r\ می گذارد لطفاً در صورت امکان با یک آرایه به عنوان خروجی چک شود .
با تشکر

من منظورتون رو از Watch نفهمیدم آیا منظورتون Debugger هستش ؟! من فکر کنم اون r\ که شما می گید مربوط به خود کامپیایلر برای فهمیدن انتهای کلمه باشه ... الان هم خروجی ما یه آرایه یک بعدی از نوع رشته هستش که ما اومدیم با یه حلقه تک تک مقادیر خونه هاشو نشون میدیم !!!!! میشه دقیق تر بگید می خواید چه کار کنید ؟

در ضمن یه نگاهی هم به لینک زیر بندازید :
http://www.dotnetperls.com/split

ahmadreza517
یک شنبه 18 تیر 1391, 14:12 عصر
خوب دوست عزیز من فایل متنی گرفتم که کلمات را با اینتر از هم جدا میکنه و شاما 1000 کلمه می باشد و نمی توانم آن را از اول به این فرمتی که شما ارائه دادین بن.یسم

لازم نیست مثل من بنویسی، کافی محتوای فایلرو تو متغیر string1 بریزی.

majidrezaei2007
یک شنبه 18 تیر 1391, 14:20 عصر
نیازی به split نیست . اون یک متن رو بر اساس یک کاراکتر تجزیه می کنه . شما باید از خاصیت Lines استفاده کنی به این شکل :

for (int i = 0; i < textBox.Lines.Length; i++)
{
MessageBox.Show(textBox.Lines[i]);
}

majidrezaei2007
یک شنبه 18 تیر 1391, 14:55 عصر
از Lines مربوط به textbox استفاده کن

for (int i = 0; i < textBox4.Lines.Length; i++)
{
MessageBox.Show(textBox4.Lines[i]);
}

f_g1348
یک شنبه 18 تیر 1391, 15:00 عصر
دوستان برنامه من به این صورت می خواهد کار کند که یک متن شامل چند جمله را از ورودی می گیرد و سپس از ورودی یکسری کلمات را که با اینتر از هم مجزا شده اند و به stop word معروفند را می گیرد سپس این کلمات را از جملات کم می کند و سپس کلمات تکراری رل نی شمارد .
برای این کار من متن وروردی را درون آرایه 1 بعدی ریختم و stop word ها هم در یک آرایه یک بعدی یدگر و این ها را از هم کم می کنم .
برای این است که من نیاز دارم این کلمات که با اینتر از هم جدا می شوند بصورت خالص درون آرایه قرار گیرند .
لطفاً من را راهنمایی بفرمایید .

sirvan-me
یک شنبه 18 تیر 1391, 17:47 عصر
چون واسه خودمم جالبه اون برنامه که نوشته بودم و تغییر دادم الان یه جورایی حرکتی که گفتی رو می کنه البته من مبتدیم خودت استادی ببین به کارت میاد .... :چشمک:

دو تا فایل تکست واسه تست گذاشتم .

برنامه به صورت Edit شده در پست های بعدی قرار گرفت

tooraj_azizi_1035
یک شنبه 18 تیر 1391, 17:52 عصر
یه نگاهی به اینجا بنداز:
http://barnamenevis.org/showthread.php?348548-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-System.Text.RegularExpressions&highlight=%DA%A9%D9%84%D8%A7%D8%B3+regex (http://barnamenevis.showthread.php?348548-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-System.Text.RegularExpressions&highlight=%DA%A9%D9%84%D8%A7%D8%B3+regex)

sirvan-me
یک شنبه 18 تیر 1391, 20:33 عصر
یه نگاهی به اینجا بنداز:
http://barnamenevis.org/showthread.php?348548-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-System.Text.RegularExpressions&highlight=%DA%A9%D9%84%D8%A7%D8%B3+regex (http://barnamenevis.showthread.php?348548-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-System.Text.RegularExpressions&highlight=%DA%A9%D9%84%D8%A7%D8%B3+regex)

باز نمیشه !!!!

f_g1348
دوشنبه 19 تیر 1391, 07:50 صبح
با سلام
دوستان من vb.net زیاد کار کردم ولی C#‎ را تازه شروع کردم
برای این کار ( split با اینتر ) در vb.net از روش ذیر استفاده می کنم و جواب میده ولی وقتی این رو حتی به C#‎ تبدیل می کنم جواب نمی گیرم .

Private Sub Button16_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button16.Click
''''''''''''''''''''ريختن كلمات بازدارنده درون آرايه جهت مقايسات بعدي
Dim FileContents As String = Nothing
Dim reader As New StreamReader("c:\stop1.txt", Encoding.[Default], True)
FileContents = reader.ReadToEnd()
TextBox5.Text = FileContents

co = 0


Dim h, i As Integer
i = 1
'Dim str4 As String() = TextBox5.Text.Split(New Char() {" "})
Dim str4 As String() = Split(FileContents, vbCrLf)


For Each word In str4 ' طول آرايه براي كلمات بازدارنده
If word IsNot String.Empty Then
co += 1
End If
Next

ReDim stopword(co - 1)

For Each word In str4 ' ريختن كلمات بازدارنده درون آرايه
If word IsNot String.Empty Then
' co += 1
stopword(h) = Trim(word)
h += 1
End If
Next

'''''''''''''''
دوست عزیز (sirvan-me)کدی که در بالا دادی آن هم جواب نمی ده

sirvan-me
دوشنبه 19 تیر 1391, 09:58 صبح
دوست من ، من فرض رو بر این گذاشتم که شما دو تا فایل تکست ( یکی حاوی Stop Words و دیگری حاوی جملات ) رو وارد برنامه می کنید ( Stop Words ها با Enter و کلمات درون فایل جمله ها ، با Enter و Space جدا شده اند ) بعد از کلیک روی Split Button کلماتی که در Stop Words هستند از جمله ی اصلی حذف می شوند ...تو برنامه ی قبلی از Trim استفاده نکرده بودم تو این برنامه که الان گذاشتم و Edit شده ی قبلی کاملا موضوعی رو که بالا گفتم انجام میده ( با 10 تا فایل تکست تست کردم ) اگه شما می خواید تغییرات روی فایل اصلی جملات هم اعمال بشه از کلاس Stream Writer استفاده کنید و محتوی جدید TextBox مربوط به جملات رو به فایل انتقال بدید ...


در ضمن دقیق بگید مشکل برنامه چیه ؟!!!

f_g1348
دوشنبه 19 تیر 1391, 11:16 صبح
دستت درد نکنه(sirvan-me)