PDA

View Full Version : معکوس کردن اعداد در یک متن



javad_r_85
پنج شنبه 08 اردیبهشت 1390, 12:55 عصر
سلام.

در برنامه ای که می نویسم نیاز دارم تا اعداد نوشته شده در یک متن را وارونه کنم به عنوان مثال متنی دارم به صورت زیر : ن34ش456 که خروجی آن باید بشود ن43ش654 البته این متن متغییر هست بدین معنی که در جایی این عدد دو رقمی یا 3 و یا 4 رقمی می باشد و یا حروف وارد شده نیز متغییر میباشد؟؟

NiMble_m
پنج شنبه 08 اردیبهشت 1390, 14:26 عصر
خب رفیق جان
شما کاراکتر به کاراکتر بخون تا زمانی که برسی به عدد
به عدد که رسیدی ، از اونجا به بعد عددهارو توی یه string ذخبره کن تا زمانی که عددها تموم بشه و دوباره به کاراکترهای غیرعددی برسی
حالا به تعداد کاراکترهای string به عقب برگرد و string رو به صورت برعکس کاراکتر به کاراکتر جایگزین کن
فقط هر دفعه آخرش یادت نره string رو خالی کنی
خیلی کار سختی نیست یکم تلاش کنی راحته

javad_r_85
پنج شنبه 08 اردیبهشت 1390, 15:01 عصر
خیلی کار سختی نیست یکم تلاش کنی راحته

دوست عزیز خوبه روشت را امتحان کنی ببینی جواب می ده یا نه ؟؟؟؟

unknown.unforgiven
پنج شنبه 08 اردیبهشت 1390, 15:48 عصر
فرض کردم رشته اصلیت اسمش str باشه، رشته ans خروجیه
String ans = "";
ArrayList tmp = new ArrayList();
Boolean isNum = Char.IsDigit(str[0]);
for (int i = 0; i < str.Length; i++)
{
do
tmp.Add(str[i++]);
while ((i < str.Length) && (Char.IsDigit(str[i]) == isNum));
if (isNum)
tmp.Reverse();
ans += (new string((char[])tmp.ToArray(typeof(Char))));
tmp.Clear();
if (i < str.Length)
isNum = Char.IsDigit(str[i--]);
}

javad_r_85
پنج شنبه 08 اردیبهشت 1390, 16:36 عصر
ممنون دوست عزیز اگر می شد یه توضیح هم بدی عالی می شد؟

Farshid007
پنج شنبه 08 اردیبهشت 1390, 17:18 عصر
سلام چرا موضوع به این کوچیکی رو با این کد های طاقت فرسا می پیچونید.
بهترین راه اینه:
1-ارایه ای از کاراکتر ها از متن می گیریم
char[] S = textBox1.Text.ToCharArray();
2-اریه رو Reveseمی کنیم.
Array.Reverse(S);
3-برایه اینکه کارکتر هارو به هم وصل کنیم هم اینکارو می کنیم:
string Trim = "";
foreach (char To in S)
{
Trim += To;
}
4-متن رو به کاربر نشون می دیم:
label1.Text = Trim;
اگه اسم گذاریم بده به بزرگی خودتون ببخشید
تازه این کار فارسی هم قبول می کنه

Farshid007
پنج شنبه 08 اردیبهشت 1390, 17:25 عصر
اگه حال ندارید چیز هایی که گفتمو بنویسید می تونید دانلود کنید.

69277

Farshid007
پنج شنبه 08 اردیبهشت 1390, 17:28 عصر
ببخشید
من تاپیک رو کامل نخوندم
فکر کردم منظورت اینه که هر متنیو که می خوایی Reverseکنی
باز هم معذرت می خوام

unknown.unforgiven
پنج شنبه 08 اردیبهشت 1390, 18:08 عصر
(عدد و حرف رو حالت های مخالف هم در نظر گرفتم)
1. اول از همه چک کردم که رشته با عدد شروع شده یا با حرف
2. با هر کدوم از دو حالت (عدد یا حرف) شروع شده باشه تا حالت مخالف پیش میره جلو و تک تک کاراکتر ها رو به یه لیست اضافه میکنه (اگه با عدد شروع شده باشه کاراکتر به کاراکتر میره جلو تا جایی که به حرف برسه و یا اگه با حرف شروع شده باشه کاراکتر به کاراکتر میره جلو تا به عدد برسه)
3. وقتی به حالت مخالفش رسید (اگه با عدد شروع شده بود به حرف و یا اگه با حرف شروع شده بود به عدد رسید) چک میکنه ببینه آرایه کمکی که ایجاد کرده شامل اعداد هست یا حروف. اگر شامل اعداد بود آرایه رو معکوس میکنه و به ادامه جواب اضافه میکنه و اگر آرایه شامل حروف بود همون جوری به جواب اضافش میکنه
کل این کارا رو تا جایی انجام میده که به آخر رشته اصلی برسه
باز اگه جاییش براتون گنگ بود بگید تا بیشتر توضیح بدم

morteza norouzi
شنبه 02 مهر 1390, 12:17 عصر
من از این کد استفاده کردم واقعا خوب و ساده بود ممنون