با سلام به دوستان عزیز
من یک رشته دارم به عنوان مثال : 29p23
که میخوام قسمت : 29P
رو ازش بردارم و فقط 23 رو ازش میخوام
کسی میتونه کمکم کنه؟
با سلام به دوستان عزیز
من یک رشته دارم به عنوان مثال : 29p23
که میخوام قسمت : 29P
رو ازش بردارم و فقط 23 رو ازش میخوام
کسی میتونه کمکم کنه؟
دوستان از
SkipWhile
میتونم استفاده کنم؟
اگه آره نحوه کدنویسیش با Oveload هاش رو کسی بهم یاد میده
سلام
چرا از Remove استفاده نمیکنید.
string a="29p23";
a=a.Remove(0,3);
از کاراکتر 0 به تعداد سه کاراکتر حذف شد و حاصل مجددا در a قرار گرفت.
آخه مشکلم اینه که نمیدونم دقیقا چندتاست
شاید 4 تا بشه
232p34
یعنی از p به بعد رو میخوام
اینجوری استفاده کردم بازم نشد:
int index1 = c1.Code.IndexOf("p".ToString());
string string1 = c1.Code.Substring(index1, c1.Code.Length);
یعنی خواستم جای p رو پیدا کنم و از بعد از اون رو بریزم توی رشتم اما p رو تشخیص نمیده و ایندکس اون رو -1 بر میگردونه و باعث پیغام خطا میشه!!
سلام.از substring استفاده کن
string a="Mehran";
string b=a.substring(Start Point,Lenght);
start point نقطه شروع رشته ای که می خوای برداری.و lenght طول این رشته است
ممنون دوست خوبم اما پست بالا منم همین رو نوشتم نشد!
اینطوری می تونی ابتدا یکی یکی کاراکتر ها رو بررسی کنی و وقتی به p رسیدی index اون رو نگه داری و سپس هرچی بعد از اون هست رو برداری
خب این بدترین روشه سربار زیادی به وجود میاد چون تعداد رشته هام فوق العاده زیاده و توی حلقست
روش بهتری نیست؟؟؟
for (int i=0;i<=a.lenght-1;i++);
string b=a.substring(i,1);
if (b=="P");
string c=a.substring(i,a.lenght-i);
حالا c جوابی که شما می خوای هست دیگه
بله جواب من هست ممنون
حالا اگه کسی روش بهتری داره که مستقیم بتونم ایندکس p رو بدست بیارم
یا نه حتی روش بهتری کلا هست بگه واقعا ممنون میشم
چون اینجوری تعداد حلقه هام زیاد میشه در ضمن خود رشته های من هم تعدادشون زیاده و سربار زیادی خواهم داشت
ممنون
ببین دوست خوبم من رشته هام طولشون زیاد نیست
درضمن دوستان ببخشید اصلا حواسم نبود....حتی حرفم هم مشخص نیست.هرچیزی میتونه باشه(p,m,n,.....) تازه متوجه شدم حواسم نبود شرمنده.
اما اینجوری میتونن باشن:
29p31
29p567
567p39
1n345
23m1
کلا یک (حرف) وسط تعداد نا مشخصی از اعداد هست که اعداد سمت راست اون حرف( مثلاp) رو میخوام
خدمت شما :
string RemoveText(string text)//a
{
for (int i = 0; i < text.Length; i++)//e
{
if (!char.IsDigit(text[i]))//d
{
text = text.Replace(text[i].ToString(), string.Empty);//c
}
}
return text;//a
}
در مورد عبارات باقاعده تحقیق کنید
این هم جواب سوالتون
Regex rex = new Regex(@"[a-zA-Z]{1}" , RegexOptions.IgnoreCase);
textBox1.Text.Split('\n').ToList().ForEach(i =>
{
if (rex.Match(i).Success)
listBox2.Items.Add(i.Split(Convert.ToChar(rex.Matc h(i).ToString())).Last());
});
آخرین ویرایش به وسیله Mahmoud.Afrad : شنبه 21 مرداد 1391 در 14:04 عصر
سلام
می تونی اول رشتت رو به آرایه تبدیل کنی پیداش کنی حذف کنی و مابقی رو دوباره تبدیل کنی به رشته و استفاده کنی.
سلام.
از اونجاییکه در پاسخ شماره 14، از Replace در یک حلقه استفاده شده و Replace باعث تغییر Instance فعلی string نمیشه (بلکه Instance جدیدی new میشه و مقدار مورد نظر در اون ریخته میشه)، بنابراین Performance بالایی نخواهد داشت (اگر قرار باشه به تعداد دفعات زیاد این کار تکرار بشه). پاسخ شماره 15، یعنی استفاده از RegEx ها هم که مشخصا Performance خوبی نداره... بنابراین هر دو پاسخ رو (با کمال احترام) رد می کنم.
بنظرم شما در یک حلقه while براحتی می تونید به هدفتون برسید:
private string ExtractNumber(string input)
{
int i = input.Length - 1;
while (i >= 0 && char.IsDigit(input[i]))
i--;
return input.Substring(i + 1);
}
دقت کنید که در کد فوق از انتهای رشته شروع می کنم و فقط تا جایی پیش میرم که به اولین کاراکتر غیر عددی بربخورم. وقتی جای اولین کاراکتر غیر عددی از سمت راست تعیین شد، اونوقت با دستور SubString مقدار مورد نظر رو برمیگردونم.
موفق باشید.
پاورقی: استفاده از Parallel در LINQ میتونه تاثیر بسزایی در بالا بردن سرعت Performance الگوریتم در CPU های Multicore داشته باشه، بنابراین برای گرفتن بهترین Performance می تونید کد فوق رو در غالب دستورات LINQ و بصورت Parallel بکار بگیرید.
سلام
چون می دانیم قبل از عددی که می خواهیم برداریم حتماً یک حرف وجود دارد پس:
Regex rex = new Regex(@"\d+$" , RegexOptions.IgnoreCase);
rex.Match(YourString);//Contains 12 in 165p12
$ باعث می شود تا آخرین عدد برداشته شود مثلا برای 165p12 خروجی 12 است.
آخرین ویرایش به وسیله tooraj_azizi_1035 : پنج شنبه 19 مرداد 1391 در 18:56 عصر