PDA

View Full Version : سوال: توابع کار با رشته



bargesabz
پنج شنبه 20 تیر 1387, 14:13 عصر
با سلام به همه ی دوستان
من می خواستم بدونم آیا در #C در بخش کار با رشته ها چقدر قوی است؟
مثلا من می تونم بگم که در فلان رشته ورودی تمام کلمات(فاصله خالی،تب،کاراکتر شروع خط جدید جدا کننده آنها است ) را بر گرداند
من برای نوشتن یک کامپایلر اینو می خوام (فاز تحلیل لغوی)

ممنون می شم اگه یه مقاله آموزشی در مورد کار کردن با رشته ها(در سطح پیشرفته) به زبان فارسی به من معرفی کنید

Sajjad.Aghapour
پنج شنبه 20 تیر 1387, 14:41 عصر
این مقاله رو بخونید اگه باز هم سوال داشتید می تونید بپرسید تا دوستان بهتون کمک کنن....
منابع مقاله داخل خود مقاله موجود می باشد...

sinpin
پنج شنبه 20 تیر 1387, 15:00 عصر
تاپيك 1001 نكته رو ببينيد :
http://barnamenevis.org/forum/showthread.php?t=95001





استفاده از Place Holder ها در کار با رشته ها (http://barnamenevis.org/forum/showpost.php?p=471909&postcount=90)
خوندن خط به خط یک رشته چند سطری (http://barnamenevis.org/forum/showpost.php?p=481521)
گرفتن کد اسکی و یونیکد کاراکتر ها (http://barnamenevis.org/forum/showpost.php?p=523913)
حالتهای مختلف نمایش تاریخ و زمان با کمک String Formatting (http://barnamenevis.org/forum/showpost.php?p=481514)
تبدیل آرایه ای از بایتها به یک رشته و بلعکس (http://barnamenevis.org/forum/showpost.php?p=478993)
بدست آوردن حروف تشکیل دهنده ی یک رشته (http://barnamenevis.org/forum/showpost.php?p=478998)
هرس کردن یک رشته متنی (http://barnamenevis.org/forum/showpost.php?p=479000)
تولید رشته های منحصر بفرد (http://barnamenevis.org/forum/showpost.php?p=479392)
روش بررسی خالی بودن یک رشته (http://barnamenevis.org/forum/showpost.php?p=479135)
تبدیل مقدار یک عبارت رشته ای به یک عدد صحیح (http://barnamenevis.org/forum/showpost.php?p=469001&postcount=42)
ایجاد متن و رشته های چند سطری (http://barnamenevis.org/forum/showpost.php?p=469011&postcount=44)
انجام عملیات متداول بر رشته ها (http://barnamenevis.org/forum/showpost.php?p=477424)
بدست آوردن تک تک مقادیر از یک رشته ی مرکب مرزبندی شده (http://barnamenevis.org/forum/showpost.php?p=479009)
بدست آوردن تعداد خطوط یک رشته (http://barnamenevis.org/forum/showpost.php?p=479008)
ايجاد رشته اي تصادفي از اعداد با طول مشخص (http://barnamenevis.org/forum/showpost.php?p=507013)
به دست آوردن تعداد خطوط متن در یک textBox (http://barnamenevis.org/forum/showpost.php?p=477181)
چرا و کی باید از کلاس StringBuilder به جای string استفاده کنیم ؟ (http://barnamenevis.org/forum/showpost.php?p=472639&postcount=116)
آغاز کار با کلاس Clipboard و دادن و گرفتن یک رشته متنی به/از آن (http://barnamenevis.org/forum/showpost.php?p=473548&postcount=130)
نحوه استفاده کاراکترهای خاص (مثلا علامت کپی رایت) (http://barnamenevis.org/forum/showpost.php?p=474585)

bargesabz
جمعه 21 تیر 1387, 12:50 عصر
با سلام دوباره
جناب sajjadlove من فایل شما رو باید به چه برنامه ای باز کنم ؟
با php designer و internet explorer باز کردم واسه هر خط نوشته فونش چیه و اندازش و....
یه کمی خوندنش مشکله.
لطفا منو راهنمایی کنید

Sajjad.Aghapour
شنبه 22 تیر 1387, 10:54 صبح
دوست عزیز این pdf هست که باید با Adobe Acrobat Reader باز کنید.فونتش رو هم ضمیمه کردم.....

bargesabz
شنبه 22 تیر 1387, 16:56 عصر
دوباره سلامدوست عزیز این فایلها روی سیتم من دارای پسوندphpهستند(نه pdf) و وقتی که با Adobe Acrobat Reader (ورژن 8 ) باز می کنم میگه نمی تونه فایل رو باز کنه چون یا نمی تونه ساپورتش کنه یا فایل ضربه خورده(به طور مثال اگر این فایل ضمیمه ایمیل بوده به طور درست دیکد نشده) به همین دلیل 5 بار این فایل رو گرفتم اما همشون این مشکل رو دارند

Sajjad.Aghapour
شنبه 22 تیر 1387, 21:48 عصر
سلام دوست عزیز....
من خودم این فایل رو دانلود کردم مشکلی نداشت.نمی دونم مشکل شما از کجاست.خوب پسوندش رو عوض کنید ببینید چی میشه.error ی هم که میده فکر کنم واسه خاطر همون font ش هست.در ضمن شما گفتید این ....فایل ها.... یه فایل که بیشتر نیست !......
نمی دونم دوستان دیگه هم که این فایل رو گرفتن همین مشکل رو دارن یا نه؟؟؟؟؟؟

bargesabz
پنج شنبه 03 مرداد 1387, 20:57 عصر
دوباره سلام
مشکل من با اون فایل حل نشد و اگه میگم فایلها یعنی اینکه من این فایل رو چند بار با نامهای مختلف گرفتم اما همونه که همونه، من هم بی خیالش شدم

بیخیال قسمت اول سوال شدم و پاکش کردم



یه سوال دیگه


اگه tab رو با 't\' و خط جدید رو با'n'\ نشون میدن فاصله خالی رو با چی نشون می دن
یعنی من چطور بنویسم

if(test[i]=='\t'||*)
به جای ستاره می خوام فاصله خالی رو نشون بدم اما هر چیزی رو می نویسم از جمله

" " یا ' ' پیغام خطا میده
من چی بنویسم؟

Xcalivorse
پنج شنبه 03 مرداد 1387, 21:00 عصر
لطفا متن رو اصلاح کنید.

Sajjad.Aghapour
پنج شنبه 03 مرداد 1387, 21:10 عصر
دوست عزیز اصلا سوالتون مفهوم نیست.ولی اگه منظورتون تبدیل یک رشته به ارایه ای از رشته است که با کاراکتر خاصی اونها از هم جدا میشن می تونی از split استفاده کنی...


string s = "int aval =431";
char[] c = { ' ', '\t' };
string[] array = s.Split(c,StringSplitOptions.None);

Sajjad.Aghapour
جمعه 04 مرداد 1387, 02:28 صبح
سلام.علت قاطی کردنتون رو نمی دونم ولی متد Split رو براتون توضیح میدم.این متد یعنی از هم جدا کردن و برای تبدیل یک رشته به ارایه ای رشته به کار میره.طرز کار اون به این صورت هست که کاراکتری رو می گیره و شروع به پیمایش رشته می کنه و تا وقتی به اون کاراکتر نرسیده همه کاراکترهای رشته رو داخل خونه جاری ارایه میریزه و به محض رسیدن به اون کاراکتر اندیس ارایه رو پلاس میکنه و خونه بعدی ارایه شروع میشه به پر شدن.حالا این جدا کننده(Separator) میتونه یک کاراکتر باشه یا مجموعه ای کاراکترها.
یه مثال:


string s = "my name is sajjad";
string[] array = s.Split(' ');

در این مثال ارایه array شامل رشته هایی از متغیر s است که با space ازهم جدا شدن.یعنی:


array[0] = "my";
array[1] = "name";
.
.

همون طور که مشاهده کردید ارایه ما به این صورت به وجود اومد.حالا برای اینکه از بیش از یک کاراکتر استفاده کنید باید ارایه ای از کاراکترهای جداکننده رو تعریف کنید.به این صورت:


string s = "my name is sajjad.i am 21 old years";
char[] separator = {' ','\t','.'};
string[] array = s.Split(separator,StringSplitOption.None);

در اینجا هم مثل حالت قبل جداکننده ها شما space ,tab ,dot هستن و ارایه ما به همون شکل قبل تولید میشه....
کدهای بالا مثل کدهای زیر هستند که مشاهده می کنید که میتونید به صورت بهینه (به همون شکل بالا)کارهای این چنینی رو انجام بدید...


int i = 0;
for (int j = 0; j < s.Length; j++)
{
if (s[j] == ' ' || s[j] == '\t' || s[j] == '.')
{
i++;
continue;
}
else
array[i] += s[j].ToString();
}