【问题标题】:SubString selection in EditText AndroidEditText Android中的子字符串选择
【发布时间】:2019-01-02 08:06:31
【问题描述】:

有没有办法在按下# 直到在EditText 中按下空格键时捕获文本?提前感谢您的帮助。

【问题讨论】:

标签: android android-edittext


【解决方案1】:

首先将addTextChangedListener 附加到您的edittext 并调用将匹配特定条件的方法,如下所示:

EditText editText = (EditText)findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    // TODO Auto-generated method stub
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

    try {
    String capturedString = getText(s);
    } catch (Exception e) {
    e.printStackTrace();
    }
} 
});

每次在edittext 字段中添加新字符时,上述代码都会尝试填充capturedString

现在编写另一个函数getText(),如下所示:

public String getText(String s) {
    String startChar = "#";
    String endChar   = " ";
    String output = getStringBetweenTwoChars(s, startChar, endChar);
    System.out.println(output);
}

此方法将匹配#space 提供的字符串。如果找到,则返回捕获的字符串,如果没有找到,则会抛出错误(此错误将在上述代码的catch 块中捕获)

现在最后,编写下面的函数,它将接收一个字符序列和两个字符,并将字符序列与提供的字符匹配并返回它们之间的字符串:

public String getStringBetweenTwoChars(String input, String startChar, String endChar) {
try {
    int start = input.indexOf(startChar);
    if (start != -1) {
        int end = input.indexOf(endChar, start + startChar.length());
        if (end != -1) {
            return input.substring(start + startChar.length(), end);
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
return input;
}

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多