آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

نحوه Relace کردن توسط شماره حروف در EditText

hosseinAmini  11 سال پیش  11 سال پیش
0 0

سلام
چه جوری می تونم به برنامه بگم  که در EditText مثلا حرف شماره 5 تا 10 رو انتخاب کن و با کلمه "خداحافظ" جایگزین کن؟
یا سوالم رو یه جور دیگه می گم: 
من یه EditText دارم که مثلا توش نوشته "سلام چه طوری؟ سلام" حالا می خوام "سلام" آخر رو با "خداحافظ" جایگزین کنم و متنم به این شکل شه "سلام چه طوری؟ خداحافظ". وقتی از دستور replace استفاده میکنم هر دو سلام به خداحافظ تبدیل میشه.
ممنون میشم راهنمایی کنید

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Rabbit  11 سال پیش
0 0

اگه میدونی "سلام" دوم کجاست مثلا همینجوری که گفتی بین 5 تا 10، میتونی Stringت رو بریزی داخل یک آرایه از کاراکترها بعد شماره های 4 تا 9 رو هر مقداری میخوای بریزی. اگه نه اول باید سلام دوم رو داخل آرایه‌ات پیدا کنی و بعد این کارو کنی.

 char [] charArray = edt.getText().toString().toCharArray();

 

0 0
مرسی، ولی من هرچی روش فکر میکنم به نتیجه نمی رسم. من جای سلام رو میدنم کجاست، این جور که شما می گید کل جمله رو باید به آرایه تبدیل کنم و بعد خونه های 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;
        }
        

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .