PDA

View Full Version : سوال: بریدن قسمتی خاص از متن



jeson_park
پنج شنبه 04 شهریور 1389, 09:05 صبح
با سلام
فرض کنی من یه رشته دار مثل این
Amin(ABC_DEF)
حالا اگه بخوام قسمتیکه داخل پرانز هست رو به همراه پرانتز حذف کنم باید چیکار کنم؟؟
این قسمت طولش متغییر هست

ایمان مدائنی
پنج شنبه 04 شهریور 1389, 09:30 صبح
دوست من ميتوني از كد زير استفاده كنيد



string d = x.ToString().Substring(TEXTBOX1.Text.Length - 3, 3);


اين كد سه كاراكتر آخر رو جدا ميكنه با عوض كردن اعداد آخر كد به نتيجه اي كه مي خواهي ميرسي

Reza_Yarahmadi
پنج شنبه 04 شهریور 1389, 11:43 صبح
اگر فقط یک پرانتز باز و بسته توی متن دارید میتونید بصورت زیر عمل کنید.


string str = "Amin(ABC_DEF)";
str = str.Substring(str.IndexOf("(") + 1, str.IndexOf(")") - str.IndexOf("(") - 1);

jeson_park
پنج شنبه 04 شهریور 1389, 11:59 صبح
دوست من ميتوني از كد زير استفاده كنيد



string d = x.ToString().Substring(TEXTBOX1.Text.Length - 3, 3);


اين كد سه كاراكتر آخر رو جدا ميكنه با عوض كردن اعداد آخر كد به نتيجه اي كه مي خواهي ميرسي
سلام
ایمان جان ممنون
این روش رو خودم می ونستم اما مشکلم اینه که اون متن متغییر هست
کد آقا رضا درست هست ولی چیزی که من می خوام ر برعکس بهم ده که خودم درستشمی کنم(من متن بیرون پرنتز رو می خوام این کد متن داخلش رو بهم میده):لبخند:

Reza_Yarahmadi
سه شنبه 09 شهریور 1389, 14:39 عصر
باز هم به اين شرط كه فقط یک پرانتز باز و بسته توی متن داشته باشيد

string str = "ABCD(EFGH)I";
int openBracket=str.IndexOf("(");
int closeBracket = str.IndexOf(")") + 1;
MessageBox.Show(str.Substring(0, openBracket) + str.Substring(closeBracket, str.Length - closeBracket));

Mohandes2009
سه شنبه 09 شهریور 1389, 17:50 عصر
فرض کن یه لیبل داری که متنش همین جمله تو هست بعد یه کلید هم داری که بازدن اون می خوای کاری که تو می خوای را انجام بده در رویداد کلیک اون button می نویسی:



string[] a =label1.Text.Split('(');
label1.Text = a[0];

jeson_park
شنبه 13 شهریور 1389, 14:05 عصر
سلام
ببخشید اگه به جای string از StringBuilder استفاده کنی باید چیکار کنم؟؟

Reza_Yarahmadi
شنبه 13 شهریور 1389, 15:56 عصر
در StringBuilder انجام همچين كارهايي رواج نداره!!
اگر كار StringBuilder تموم شده و كار خاص ديگه اي نداره كه ميتونيد به همون صورت String باهاش برخورد كنيد ولي اگر به StringBuilder نياز داريد ميتونيد با كاري مثل زير اين كار رو انجام بديد

StringBuilder sb = new StringBuilder();
sb.Append("ABC(Reza)I");
int len = sb.Length;
sb.Append(sb.ToString().Substring(0, sb.ToString().IndexOf("(")) + sb.ToString().Substring(sb.ToString().IndexOf(")") + 1));
sb.Remove(0, len);
MessageBox.Show(sb.ToString());

#aliyari_C
شنبه 13 شهریور 1389, 21:55 عصر
سلام
همین جا هاست که ساختمان داده با Function Recursive (تابع بازگشت) به داد آدم می رسه..
البته به شر ط اینکه نوشتارت درست نوشته شده باشد. نوشتار پایین اشتباه است


strres("ali )abc) .mohammed (abcd) reaza (ab) I (wradada)(daadad)")

در ضمن برای پرانتزهای تو در تو , خودت از کد ایده بگیر و دستورات مورد نظر را اضافه کن


MessageBox.Show(strres("ali )abc) .mohammed (abcd) reaza (ab) I (wradada)(daadad)"));


public string strres(string str)
{


try
{

string temp = null;
int i1 = str.IndexOf('(');

if (i1 == -1)
return str;
int i2 = str.IndexOf(')');


temp = str.Remove(i1, i2 - i1 + 1);

str = strres(temp);
return str;
}
catch (Exception)
{

MessageBox.Show("ساختار شما اشتباه است" +"\n"+ str);
return null;
}

}


موفق و تندرست باشی
__________________________________________________ __________________________________________________ _____
سکوت سرشار از نا گفته هاست...........

jeson_park
یک شنبه 14 شهریور 1389, 11:30 صبح
سلام
آقا رضا کد ما رو که می نویسم argumntOutOfRangeException می ده
lenght cannot than zero
آقای علی من که گفتم باید نوع داده stringBuildr باشه

Reza_Yarahmadi
یک شنبه 14 شهریور 1389, 11:47 صبح
کد ما رو که می نویسم argumntOutOfRangeException می ده
lenght cannot than zeroخب اين به اين خاطر پيش مياد كه StringBuilder خاليه و چيزي توش نيست قبل از اين دستورات شرط بذاريد كه اگه متني هست اين كارها انجام بشه

if(len != 0)
}
sb.Append(sb.ToString().Substring(0, sb.ToString().IndexOf("(")) + sb.ToString().Substring(sb.ToString().IndexOf(")") + 1));
sb.Remove(0, len);

{

mojtaba_nava
یک شنبه 14 شهریور 1389, 15:53 عصر
سلام.شما فقط بايد از split ها استفاده كنيد.موفق باشيد.

#aliyari_C
یک شنبه 14 شهریور 1389, 19:21 عصر
هرجایی که خوب نیست از StringBuilder اسفاده کنی:
http://www.barnamenevis.org/forum/showthread.php?t=233987
بعدش , شما می تونی وقتی StringBuilder رو پر کردی ToString() رو برا تابع ارسال کنی
موفق باشی