PDA

View Full Version : سوال: جدا کردن عدد از رشته و تفکیک در دو رشته



sahel65
شنبه 10 اردیبهشت 1390, 10:14 صبح
سلام

یک سوال در خصوص جدا کردن عدد از رشته داشتم؛

این برنامه ای است که نوشتم:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{

static void Main(string[] args)
{
char[] d = new char[12];
string dd = "5Ed5v3a4r3d4";
for (int i = 0; i < dd.Length; i++)
{

d[i] = dd[i];
{
if (d[i] >= 'a' && d[i] <= 'z' || d[i] >= 'A' && d[i] <= 'Z')
{
Console.WriteLine(d[i]);
}
}
}
Console.ReadLine();
}
}
}



تا اینجا برنامه درست کار میکنه و در خروجی فقط رشته ها رو به من نشون میده، حالا

در قسمت شرطی؛اگه بخوام بجای حروف از عدد استفاده کنم، چگونه باید این کار رو انجام بدم:




if (d[i] >= 'a' && d[i] <= 'z' || d[i] >= 'A' && d[i] <= 'Z')
]
یعنی اینجوری:


if (d[i] >= 0 && d[i] <= 9)



ضمنا اگه بخوام بعد از جدا کردن حروف اونها رو تو یک رشته دیگه کپی کنم، چگونه باید نسبت به این کار اقدام کنم؟


یعنی در نهایت دو تا رشته داشته باشم که یکیش فقط شامل اعداد و دیگری شامل کاراکتر؟

haghft
شنبه 10 اردیبهشت 1390, 13:35 عصر
شما از 2 کار میتونید بکنید:
1.از regex استفاده کنید تقریبا این شکلی:
using System.Text.RegularExpressions;
Regex regex = new Regex("^[0-9]*$");
if(regex.IsMatch("str"))
str1 = str;
else
str2 = str;
2.از Char.IsNumber استفاده کنید.

sahel65
شنبه 10 اردیبهشت 1390, 14:46 عصر
من برنامه رو به این شکل تغییر دادم ولی نتیجه ای حاصل نشد.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
class Program
{

static void Main(string[] args)
{
char[] d = new char[12];
string str = "5Ed5v3a4r3d4";
string str1="";
string str2="";
Regex regex = new Regex("0-9");
if(regex.IsMatch("str"))

str1 = str;

else

str2 = str;

Console.WriteLine(str1);
Console.WriteLine(str2);

}

}
}

امکانش هست راهنمایی بیشتر بدید؟ و کمکم کنید؟
میشه بفرمایین کار regex چیه؟
من اینو تو خیلی از جاها دیدم، ولی نحوه کارشو نمیدونم.

haghft
شنبه 10 اردیبهشت 1390, 17:15 عصر
شما باید اون regex رو حتما به این شکل بدید:
Regex regex = new Regex("^[0-9]*$");

Regular-Expressions.info (http://www.regular-expressions.info/)

sahel65
شنبه 10 اردیبهشت 1390, 18:19 عصر
راستش اول به همون شکلی که شما مرقوم کرده بودید دادم ولی نشد؛ میشه یه مثال بزنید؟

zahmatkesh8519
شنبه 10 اردیبهشت 1390, 23:48 عصر
برای جدا کردنش این رو ببین

string s ;
s="sd5H5Jd4^";

بعد حلقه For


s.replace(X,"");

که X می تونه هر کدوم از مقدار های عددیت باسه که نمی خوای چاپ بشه .

sahel65
یک شنبه 11 اردیبهشت 1390, 12:21 عصر
به ایده جالبی اشاره کردید؛
ولی خط 11 رو ایراد میگیره!


class Program
{
static void Main(string[] args)
{

string s = "5Ed5v3a4r3d4";
for (int i = 0; i < s.Length; i++)

if (char.IsDigit(s[i]))
{
s.Replace((s[i]), "d");
}
Console.WriteLine(s);
}
}
}

میشه ایرادش رو بگید؟
ضمنا اگه من بخوام اعداد رو حذف کنم میتونم به جای "d" از " " استفاده کنم؟

zahmatkesh8519
شنبه 24 اردیبهشت 1390, 00:04 صبح
این مثال همون کار رو به روشی ساده انجام می ده

string s = "5Ed5v3a4r3d4";
string Result = "";
for (int i = 0; i < s.Length; i++)
if (char.IsDigit(s[i]))
{
Result = Result + s[i];
}
MessageBox.Show(Result);