PDA

View Full Version : پیدا کردن و جدا کردن اعداد از یک متن



* S K Y *
دوشنبه 13 دی 1389, 16:02 عصر
سلام
آیا روش زیر امکان پذیر است؟
فرض کنید که یک تکست باکس داریم
اینها هم درونش است:
22 15 8
مجید 23
شماره 1214 حساب 123 سن 18
چه طوری میشه اعداد را جدا کرده و هر کدام را در یه متغیر از نوع int فرستاد؟
آیا اصلا میشه این کار را کرد؟

ACorvinus
دوشنبه 13 دی 1389, 16:46 عصر
سلام. خوبی؟!
یادت نره سعی کنی سوالات ACM رو حل کنی!!

خب بریم سر اصل مطلب:


List<long> lstInt64 = new List<long>();
string Temp = string.Empty;

for (int index = 0; index < textBox1.Text.Length; index++)
{
if (Microsoft.VisualBasic.Information.IsNumeric(textB ox1.Text[index]))
Temp += textBox1.Text[index].ToString();
else if (!String.IsNullOrEmpty(Temp))
{
lstInt64.Add(long.Parse(Temp));
Temp = string.Empty;
}
}

فقط یادت نره به Microsoft.VisualBasic حتما یه Reference بدی. برای Reference دادن باید از Solution Explorer در پروژه جاری روی References کلیک راست کرده و Add Reference رو بزنی بعدش از برگه Net. روی Microsoft.VisualBasic کلیک کرده و Okey رو بزنی.
موفق باشی.

* S K Y *
دوشنبه 13 دی 1389, 16:51 عصر
چرا انقدر سختش کردی؟
نمیشه از Microsoft.VisualBasic استفاده نکرد؟
خود c# کدی نداره؟
اگه نداره پس خاک تو سر سی شارپ:لبخند:

* S K Y *
دوشنبه 13 دی 1389, 16:53 عصر
راستی همین اعداد بالا را با روش شما چه طور میشه ریخت توی آرایه؟
نکنه سی شارپ آرایه را هم نداره؟
توی ++C که داشت.

ACorvinus
دوشنبه 13 دی 1389, 17:02 عصر
سلام.

خواستم ببینم عکس العمل نشون میدین یا مثل خیلی ها به جواب که رسیدین دیگه حله!!!

معادل


Microsoft.VisualBasic.Information.IsNumeric(textBo x1.Text[index])

اینو بنویس:


Char.IsNumber(textBox1.Text[index])

و در مورد آرایه؟! اگه اعداد شما ثابت باشن میتونین از آرایه استفاده کنین در غیر اینصورت اگه میتونین خودتون بنویسین :لبخند:

* S K Y *
دوشنبه 13 دی 1389, 20:52 عصر
و در مورد آرایه؟! اگه اعداد شما ثابت باشن میتونین از آرایه استفاده کنین
اینی که گفتی یعنی چی؟
یعنی چی ثابت؟
منظورتون تعدادشونه؟
اصلا فرض کنین تعداد همیشه 5 تاست یعنی 5 تا عدد با یک space از هم جداشدند مثل زیر:
5 0 25 8 72
و این 5 تا عدد ذکر شده در تکست باکس است.
چطور باید با کد بالا (که خودتون نوشتین) اونها را خوند و همه را به ترتیب در یه آرایه 5 عنصری ریخت؟

ممنون که میخواین جوابمو بدین:تشویق:

prankster
دوشنبه 13 دی 1389, 22:59 عصر
string s = "5 0 25 8 72";
Regex regex = new Regex(@"\d+");
List<int> _list = regex.Matches(s).OfType<Match>().Select(t => Int32.Parse(t.Value)).ToList();

ACorvinus
دوشنبه 13 دی 1389, 23:20 عصر
دوستمون prankster هم روش Regular Expression رو پیشنهاد دادن. اینم روش فوق العاده ای هستش. بنظرم بهتره از این روش استفاده کنی و بیخیال آرایه و از این حرفا بشی.

amir-yeketaz
سه شنبه 14 دی 1389, 00:44 صبح
من دیگه اومدم اصن یه کنترل طراحی کردم برای این کار:
http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1186823&viewfull=1#post1186823

برو حالشو ببر!!!!!(وای که چه کار سختی!!!)