بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
نحوه Relace کردن توسط شماره حروف در EditText
سلام
چه جوری می تونم به برنامه بگم که در EditText مثلا حرف شماره 5 تا 10 رو انتخاب کن و با کلمه "خداحافظ" جایگزین کن؟
یا سوالم رو یه جور دیگه می گم:
من یه EditText دارم که مثلا توش نوشته "سلام چه طوری؟ سلام" حالا می خوام "سلام" آخر رو با "خداحافظ" جایگزین کنم و متنم به این شکل شه "سلام چه طوری؟ خداحافظ". وقتی از دستور replace استفاده میکنم هر دو سلام به خداحافظ تبدیل میشه.
ممنون میشم راهنمایی کنید
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
Rabbit
11 سال پیش
0
0
اگه میدونی "سلام" دوم کجاست مثلا همینجوری که گفتی بین 5 تا 10، میتونی Stringت رو بریزی داخل یک آرایه از کاراکترها بعد شماره های 4 تا 9 رو هر مقداری میخوای بریزی. اگه نه اول باید سلام دوم رو داخل آرایهات پیدا کنی و بعد این کارو کنی.
char [] charArray = edt.getText().toString().toCharArray();
مرسی، ولی من هرچی روش فکر میکنم به نتیجه نمی رسم. من جای سلام رو میدنم کجاست، این جور که شما می گید کل جمله رو باید به آرایه تبدیل کنم و بعد خونه های 5 تا 10 رو حذف کنم، حالا باید خداحافظ رو هم به آرایه تبدیل کنم و توی خونه 5 تا بزارم؟ خب سلام 4تا حرف داره و خداحافظ هفت تا، اینجوری نمیشه اینکا رو کرد که. اگه اشتباه متوجه شدم بی زحمت یه مثال ساده بزن، ممنون (11 سال پیش)
پاسخ به سوال
Rabbit
11 سال پیش
+1
0
کد رو چک نکردم که درست کار کنه ولی چیزی که تو ذهن من بود یه همچین کاری بود.
String myText = "";//jomleye to
String replace = "";//chizi ke mikhay replace koni
int start = 0, end = 0, size; // start o end shomare khoone hayian ke dari
char[] myArray = myText.toCharArray();
char[] replaceArray = replace.toCharArray();
char[] temp;
if (end - start > replaceArray.length)
{
size = myArray.length - (start - end) + replaceArray.length; // gharare arrayet bozorgtar she
} else if (end - start < replaceArray.length)
{
size = myArray.length - replaceArray.length + (start - end); // gharare koochik tar she
} else // size kalameyi ke mikhay jaygozin koni o kalame ghablit yekie nemikhad taghiri bedi
{
size = myArray.length;
}
temp = new char[size];
boolean doThisOnce = true;
for (int i = 0 , j=0 , k=0; i < size; ++i)
{
/*
* inja mikhaim ke tooye bazeye khasse az start ta end
* berim az replaceArray bekhoonim baghie jaha az myArray;
*/
if (i >= start && i < end)
{
temp [i] = replaceArray[k];
++k;
if(doThisOnce)
{
j+= (end - start);
doThisOnce = false;
}
}
else
temp [i] = myArray[j];
++j;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .