View Full Version : مشکل در تبدیل یه رشته شامل اعداد فارسی به عدد
hamidtb
جمعه 13 دی 1387, 09:54 صبح
سلام
من وقتی میخوا با دستور Convert یه رشته که داخلش اعداد فارسی هست رو به عدد تبدیل کنم برنامه خطای زیر رو میده
Input string was not in a correct format.اینم کد
LongDate = Convert.ToInt32(DateStr)که DateStr شامل اعداد ٠١٢٣٤٥٦٧٨٩هست
h.jaza
جمعه 13 دی 1387, 14:29 عصر
دوست عزیز این کد ایرادی نداره، احتمالا مشکل از جای دیگه ای هست.
احتمالا همراه با این رشته ی ورودی غیر از عدد مقادیر غیر عددی دیگه ای هم می فرستادی که بهت ایرور میده.
hamidtb
جمعه 13 دی 1387, 15:01 عصر
سلام
نه فکر نکنم
این رشته مثلا به صورت ١٣٨٧/٠٢/٠٣ هست که من با string.replace("/","") اسلش توی اونو حذف میکنم
فکر نکنم چیز دیگه ای توی رشته باشه
h.jaza
جمعه 13 دی 1387, 16:39 عصر
این کد مشکلی نداره:
string text = textBox1.Text.Replace("/", "");
int num = Convert.ToInt32(text);
احتمالا مشکل از جای دیگه ای هستش.
hamidtb
سه شنبه 17 دی 1387, 09:40 صبح
سلام
من دوباره توی برنامه ام به همین مشکل برخوردم
من کد
Convert.ToInt32(DGVGhestha.Rows[i].Cells[2].Value.ToString().Replace(@"/",""))رو توی یه فرم نوشتم بدون هیچ مشکلی کار میکنه اما درست مثل همین کد رو توی یه فرم دیگه نوشتم خطا میده که :
Input string was not in a correct format.که این خونه شامل مقدار ١٣٨٨/٠١/٠١ هست
:عصبانی++::عصبانی++::عصبانی++:
amirferdowsi
سه شنبه 17 دی 1387, 10:01 صبح
سلام
دوست عزیز ببین این کد مشکلت رو حل میکنه :
Int32 int_Text = Int32.parse(string);k
hamidtb
سه شنبه 17 دی 1387, 10:26 صبح
سلام
دوست عزیز ببین این کد مشکلت رو حل میکنه :
Int32 int_Text = Int32.parse(string);k
دوست عزیز ممنون
ولی بازم ....:عصبانی++::عصبانی++:
hamidtb
سه شنبه 17 دی 1387, 10:28 صبح
راستی
دستوری نیست که من بتونم کد اسکی یه کاراکتر رو ببینم
h.jaza
سه شنبه 17 دی 1387, 11:10 صبح
سلام
دوست عزیز ببین این کد مشکلت رو حل میکنه :
Int32 int_Text = Int32.parse(string);k
اولا این کد زمانی درسته که رشته ی شما کاملا متشکل از اعداد باشه نه عدد و کاراکتر.
ثانیا استفاده از parse خیلی پیشنهاد نمیشه چرا که هم از فرایند تبدیل جالبی بهره نمی بره و هم اینکه در صورت بروز مشکل برنامه Exception میده. (منظورم این نیست که درست کار نمیکنه، اشتباه نگیر)
وسه ی همین یا از TryParse و یا از متدهای Abstract کلاس Convert باید استفاده بشه که اونها هم تنها برای زمانیست که تمام رشته شامل اعداد باشه.
ولی در این حالت دو کار بیشتر نمیشه انجام داد:
1- استفاده از همان متد Replace و ...
2- Trim کردن
البته Spilt هم می تونه بکار بیاد ولی کار و می پیچونه
بعد از این می بایست رشته ی حاصل که کامل متشکل از اعداد است توسط یکی از همون متد های بالا به عدد تبدیل کرد و تمام.
دستوری نیست که من بتونم کد اسکی یه کاراکتر رو ببینم
در رویداد هایی مثل KeyPress، KeyUp ،KeyDown و ...، شما می تونی با استفاده از خصوصیات e به کد اسکی کاراکتر مورد نظر دسترسی داشته به سادگی باهاش کار کنی مثل e.KeyChar و خیلی های دیگه.
البته برای در آوردن کد اسکی روش های زیادی وجود داره که این یکیشونه.
h.jaza
سه شنبه 17 دی 1387, 11:20 صبح
یه نکته ی دیگه که الان یادم اومد اینکه اولا به @ نیازی نیست که شما گذاشتی و ثانیا کدت رو از
Convert.ToInt32(DGVGhestha.Rows[i].Cells[2].Value.ToString().Replace(@"/",""));
به
string text = textBox1.Text.Replace("/", "");
int num = Convert.ToInt32(text);
تغییر بده، یعنی جداشون کن، شاید درست بشه.
hamidtb
سه شنبه 17 دی 1387, 11:37 صبح
سلام
نه بازم همون خطا رو میده
kamiloted
یک شنبه 23 خرداد 1395, 16:50 عصر
سلام دوستان اگر کسی با این مشکل برخورد آخر ریپلیس کد Trim() بزارید.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.