PDA

View Full Version : سوال: مشکل با convert کردن به []int



masoud.a
پنج شنبه 19 مرداد 1391, 11:08 صبح
سلام
وقتی قطعه کد مثل این رو مینویسم میگه int به []int کانورت نمیشه.میتونید راهنمائیم کنید چکار کنم؟

int[] RxBuff = new int[260];
RxBuff = int.Parse(comport.ReadExisting());

tooraj_azizi_1035
پنج شنبه 19 مرداد 1391, 11:26 صبح
خروجی Parse فقط یه عدده اگه می خوای همه اعداد رو خارج کنی باید با Regex کار کنی:

string input = @"1-02345- 2,?:434343";
string pattern = @"\d"; // Match only digits
int[] RxBuff = new int[260];

RxBuff=Array.CovertAll<string,int>(Regex.Matches.OfType<string>().ToArray(),s => int.Parse(s));

masoud.a
پنج شنبه 19 مرداد 1391, 12:14 عصر
خروجی Parse فقط یه عدده اگه می خوای همه اعداد رو خارج کنی باید با Regex کار کنی:

string input = @"1-02345- 2,?:434343";
string pattern = @"\d"; // Match only digits
int[] RxBuff = new int[260];


RxBuff=Array.CovertAll<string,int>(Regex.Matches.OfType<string>().ToArray(),s => int.Parse(s));



ممنون فقط میشه یه کم درمورد کدتون توضیح بدین

aqawae
پنج شنبه 19 مرداد 1391, 12:21 عصر
int[] RxBuff = new int[260];
RxBuff = Array.ConvertAll(comport.ReadExisting().ToArray(), x => (int)x - 48);

حامد فراست
پنج شنبه 19 مرداد 1391, 14:46 عصر
جسارتا اگه از
Comport.Read()استفاده کنید بهتر نیست؟خودش مستقیما داده رو بصورت عددی و یا کاراکتری در اختیارتون میذاره!
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.read.aspx

tooraj_azizi_1035
پنج شنبه 19 مرداد 1391, 15:18 عصر
کد رو اصلاح می کنم تست شده و کار می کنه:


string input = @"1-02345- 2,?:434343";

string pattern = @"\d+"; // Match only digits


MatchCollection mc=Regex.Matches(input,pattern);


int[] RxBuff = new int[mc.Count];


RxBuff=Array.CovertAll<Match,int>(mc.OfType<Match>().ToArray(),m => int.Parse(m.Value));


\d+ الگویی هست برای استخراج تنها اعداد از داخل یک متن ترکیبی.
متد ConvertAll هم نوع ورودی اش Match است و نوع خروجی اش int. یک آرایه از نوع Match را میگیرد و با Parse مقدار Value برای هر عنصر آرایه نهایتاً یک ارایه از اعداد صحیح بر می گرداند.