Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EditText Android中的子字符串选择_Android_Android Edittext - Fatal编程技术网

EditText Android中的子字符串选择

EditText Android中的子字符串选择,android,android-edittext,Android,Android Edittext,是否有一种方法可以捕获一次#文本,直到在EditText中按空格键为止?提前感谢您的帮助。首先将addTextChangedListener附加到您的edittext并调用一个方法,该方法将匹配以下特定条件: EditText editText = (EditText)findViewById(R.id.editText); editText.addTextChangedListener(new TextWatcher() { @Override public void afterTextCha

是否有一种方法可以捕获一次
#
文本,直到在
EditText
中按空格键为止?提前感谢您的帮助。

首先将
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();
    }
} 
});
public String getText(String s) {
    String startChar = "#";
    String endChar   = " ";
    String output = getStringBetweenTwoChars(s, startChar, endChar);
    System.out.println(output);
}
每当向
edittext
字段添加新字符时,上述代码将尝试填充
capturedString

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

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();
    }
} 
});
public String getText(String s) {
    String startChar = "#";
    String endChar   = " ";
    String output = getStringBetweenTwoChars(s, startChar, endChar);
    System.out.println(output);
}
此方法将匹配为
#
空格提供的字符串。如果找到,它将返回捕获的字符串如果找不到,它将抛出一个错误(此错误将在上述代码的
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;
}

希望这有帮助:)

您尝试过editText上的文本观察者界面吗?您的问题很难理解。您的意思是要监视字符“#”,然后捕获文本,直到按下空格键为止?如果是这样的话,我建议大家阅读一下文本更改侦听器()这正是我想问的。唐诺为什么被否决。查询简单明了。我们将检查链接。