我正在使用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");
}
答案 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。