PDA

View Full Version : سوال: حذف کاراکتر خاص تکراری در متن و جایگزین کردن عدد به ترتیب



FirstLine
دوشنبه 19 دی 1390, 23:24 عصر
با سلام
یک متن در متغییر بصورت زیر دارم که کاراکتر # در بین آنها تکرای است و بصورت کاراکتر نشانه گذاری اضافه شده است


str_Text="
خط اول شامل کاراکترهای # و استفاده از برنامه نویسی سی شارپ# است
خط دوم شامل کاراکترهای # و استفاده از برنامه نویسی سی شارپ# است
خط سوم شامل کاراکتر شارپ نیست
خط چهارم شامل کاراکترهای # و استفاده از برنامه نویسی سی شارپ# است
"


1- چجوری میشه از ابتدای متغیر بترتیب همه کااکترهای # با عدد جایگزین شود (مثلا عدد 1 جایگزین اولین کاراکتر # و عدد 2 جایگزین دومین کاراکتر # و .... بهمین ترتیب تا انتهای متن همه کااکترهای # با عدد ایندکس و ترتیب آن جایگزین شود)
مثلا:


str_Text="
خط اول شامل کاراکترهای 1 و استفاده از برنامه نویسی سی شارپ2 است
خط دوم شامل کاراکترهای 3 و استفاده از برنامه نویسی سی شارپ4 است
خط سوم شامل کاراکتر شارپ نیست
خط چهارم شامل کاراکترهای 5 و استفاده از برنامه نویسی سی شارپ6 است
"


2- چجوری همه کاراکترهای # را که در هر خط و لاین هستند را یک عدد بدهم و خط بعدی اگر کاراکترهای # داشت عدد بعدی جایگزین شود
مثلا:


str_Text="
خط اول شامل کاراکترهای 1 و استفاده از برنامه نویسی سی شارپ1 است
خط دوم شامل کاراکترهای 2 و استفاده از برنامه نویسی سی شارپ2 است
خط سوم شامل کاراکتر شارپ نیست
خط چهارم شامل کاراکترهای 3 و استفاده از برنامه نویسی سی شارپ3 است
"


لطفا راهنمایی بفرمایید
با تشکر

mehdi3000
دوشنبه 19 دی 1390, 23:32 عصر
شما می تونید از متدی برای replace بنویسید به طوری که مقداری که می خواد replace شود یک متغیر عددی باشد که در یک حلقه for یا while مقدار آن تغییر می کند و از یک تا n پیش می رود

FirstLine
دوشنبه 19 دی 1390, 23:44 عصر
با سلام
یعنی کل متن رو بصورت آرایه ای بزارم توی یه حلقه و اینجوری بترتیب عوض کنم؟
اینجوری اگه متن زیاد باشه مشکل پیش میاد
من فکر کردم شاید با RegEx بشه با سرعت بالاتر و تمیزتر اینکار را انجام داد
با تشکر

mehdi3000
دوشنبه 19 دی 1390, 23:50 عصر
for(int i=0; i<n; i++){
txtValue.Replace("#",i)
}

mehdi3000
دوشنبه 19 دی 1390, 23:56 عصر
متاسفانه ظاهرا متن کدی که گذاشتم بد نمایش داده می شه
ولی لپ مطلب اینه که شما می تونی تو حلقه ای که داری مقدار متغیر i رو جایگزین مثلا # کنی تنها با استفاده از متد دات نتی Replace

mehdi3000
سه شنبه 20 دی 1390, 00:01 صبح
for(int i=0; i<n; i++){
txtValue.Replace("#",i)
}

FirstLine
سه شنبه 20 دی 1390, 14:08 عصر
for(int i=0; i<n; i++){
txtValue.Replace("#",i)
}


با سلام
متغیر n چیه؟
با تشکر

hamid_shrk
سه شنبه 20 دی 1390, 14:18 عصر
با سلام
متغیر n چیه؟
با تشکر
طول متن حتما

FirstLine
سه شنبه 20 دی 1390, 14:50 عصر
با سلام
کد بالا کاری رو که من توضیح دادم انجام نمیده و کل کاراکترهای # را همیشه با یک عدد جایگزین میکنه
لطفا راهنمایی بفرمایید
با تشکر

mehran_sh_t
سه شنبه 20 دی 1390, 15:03 عصر
for(int i=0; i<n; i++){
txtValue.Replace("#",i)
}

سلام
این کد جواب نمی ده، در هر دور از حلقه، تمام # ها رو با i جایگزین می کنه، اینطوری همیشه در خروجی، به جای تمام # ها n هستش.

شما باید در طول یک حلقه، for یا while، در طول متن حرکت کنید، با هربار مشاهده #، اون رو با i جایگزین کنید، بعد به i یه دونه اضافه کنید.

چیزی مشابه این:

int i = 0;
for(int j=0;j<strText.Length;j++)
(
if(strText[j]=='#'
{
strText[j] = i;
i++;

}
)

meisam3322
سه شنبه 20 دی 1390, 21:09 عصر
دوست عزیز n طول رشته هست

mehdi3000
سه شنبه 20 دی 1390, 22:16 عصر
بلی متاسفانه کد پیشنهادی من جوابگوی این کار نیست به خاطر اینکه در هربار اجرا کلیه یافته ها را با مقدار جدید جایگزین می کنه و متاسفانه من به این مورد توجه نکرده بودم.
برای این مورد بهترین موردی که به ذهن می رسه همون استفاده از آرایه و حلقه است که دوستمون مهران به اون اشاره کرده اند

FirstLine
چهارشنبه 21 دی 1390, 08:42 صبح
strText[j] = i;


با سلام
از این خط ایراد میگیره چون میخواد یه عدد چند کاراکتری را در یک کاراکتر بریزه

int -> 4 byte integer
char -> 2 byte
با تشکر

FirstLine
چهارشنبه 21 دی 1390, 09:27 صبح
با سلام
با توجه به راهنمایی های دوستان یه راه کار راه بنداز پیدا کردم، اما به دل نمیشینه



string str_Temp = txt_Editor_Main.Text;
string str_Return = "";
int i = 0;
for (int j = 0; j < str_Temp.Length; j++)
{
if (str_Temp[j] == '#')
{
str_Return += i.ToString();
i++;
}
else
{
str_Return += str_Temp[j];
}
}
txt_Editor_Main.Text = str_Return;

با تشکر