简体   繁体   中英

delete/modify selected text in EdiText in android

I entered text in an EditText while designing a form filling app. Now, if i select part of that text, and wish to delete/modify it, I am not getting how to do it. All other options show how to clear entire textbox. How to clear just selected text.

   EditText inputText=(EditText)findViewById(R.id.edit);
    String inputString=inputText.getText().toString();


    //To get the selected String
    int selectionStart=inputText.getSelectionStart();
    int selectionEnd=inputText.getSelectionEnd();
    String selectedText = inputString.substring(selectionStart, selectionEnd);

    if(!selectedText.isEmpty())
    {
        //Modify the selected StringHere
        String modifiedString="...your modification logic here...";

        //If you wish to delete the selected text
        String selectionDeletedString=inputString.replace(selectedText,"");
        inputText.setText(selectionDeletedString);

        //If you wish to modify the selected text
        String selectionModifiedString=inputString.replace(selectedText,modifiedString);
        inputText.setText(selectionModifiedString);

    }

You need to extract the string with

String fromEditText = editText.getText();

Now, you can do with string whatever you want and then put it back like

editText.setText(myString);

For operations with strings google working with strings and chars java on google.

Try this..

public void modifyText(View view ) {
    if (view instanceof EditText) {

        if(view.getText().toString().equals("Selected text")){
           view.setText("Your Text");
        }
     }

        if (view instanceof ViewGroup) {

        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {

            View innerView = ((ViewGroup) view).getChildAt(i);

            modifyText(innerView);
        }
    }   
}

call this in your activity modifyText(findViewById(R.id.rootView));

This will modify all EditText in the current activity

I found this to be the best solution.

String contents = editText.getText().toString(), newText;
newText = contents.substring(0, noteEdit.getSelectionStart()) + 
contents.substring(editText.getSelectionEnd(), contents.length());
editText.setText(newText);

Edit Selection

An easy and best(maybe) way of modifying the selected text.

int start = descriptionBox.getSelectionStart();
int end = descriptionBox.getSelectionEnd();
String modifiedText = "*" + descriptionBox.getText().subSequence(start, end) + "*";
descriptionBox.getText().replace(start, end, modifiedText);

Input Text ( '|' indicate selection )

hello |world|

Output Text

hello *world*

Delete Selection

All you have to do is replace the start and end of selection with empty String.

int start = descriptionBox.getSelectionStart();
int end = descriptionBox.getSelectionEnd();
descriptionBox.getText().replace(start, end, "");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM