startsWith()方法始终返回false

时间:2019-12-22 15:12:31

标签: java regex

我正在使用Sketchware(一个用于创建应用程序的Android应用程序)。一切都是以块的形式进行的,但都是以纯常规的普通Java进行编译的。

我似乎找不到问题,但是endsWith方法总是返回false。即使以0、6或其他结尾。

if (!textview1.getText().toString().isEmpty() == true) {
    // the expression in the following if statement never evaluates to true
    if (textview1.toString().endsWith("[10-9]") == true) {
        symbols.add("-");
        textview1.setText(textview1.getText().toString().concat("-"));
    } else {
        SketchwareUtil.showMessage(getApplicationContext(), "false");
    }
} else {
        SketchwareUtil.showMessage(getApplicationContext(), "Can't use symbols before numbers");
}

3 个答案:

答案 0 :(得分:2)

查看文档https://docs.oracle.com/javase/9/docs/api/java/lang/String.html#endsWith-java.lang.String-

endsWith中的参数应为字符序列。您的字符串的末尾不得包含字符序列[0-9],因此您总是得到false作为结果。

您应将其编写如下:

if(textview1.toString().matches("^.*\\d$"))

注意:如果字符串末尾有数字,这将返回true。如果您希望它返回true(如果字符串中的任何地方都有数字),则应使用matches(".*\\d.*")

答案 1 :(得分:1)

根据docs $con->query( $sql );方法

  

测试此字符串是否以指定的后缀结尾。

因此,如果您将实例<div class="form-group"> <label for="exampleFormControlSelect1">.....................:</label> <select class="form-control" id="vip"> <?php $conn = new mysqli("............................."); if( !$conn->connect_error ){ /* select the fields used to build the menu */ $sql = 'select `id`,`server` from `servers` where `owner_id` = ?'; $stmt = $conn->prepare( $sql ); $stmt->bind_param('s', getID($_SESSION["prihlaseni"])); $result=$stmt->execute(); if( $result ){ $stmt->store_result(); $stmt->bind_result( $id, $server ); while( $stmt->fetch() ){ printf( '<option value="%s">%s', $id, $server ); } } } ?> </select> </div> 作为字符串传递,则endsWith的计算结果为false,因为test1的结尾不是endsWith

您需要为此使用正则表达式。使用test1类中的[0-9] method

示例:

matches

答案 2 :(得分:0)

正则表达式可能是使它正确运行的最佳选择。与此类似:

Pattern.compile("[0-9]$").matcher(textView1.toString()).find())

根据字符串中的最后一个字符是否匹配0-9,最终应返回true或false。