我在andriod中创建简单的应用程序..我想只允许在edittext中使用字母,空格和点。我写了一些代码但没有工作。
这是我的代码:
name.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence cs, int start,
int end, Spanned spanned, int dStart, int dEnd) {
// TODO Auto-generated method stub
if(cs.equals("")){ // for backspace
return cs;
}
if(cs.toString().matches("[a-zA-Z. ]")){
return cs;
}
return "";
}
}
});

请有人帮忙..
提前致谢!!
答案 0 :(得分:0)
您必须将 #! /usr/bin/python
#
import random
import time
from time import sleep
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode( GPIO.BOARD) #using pin numbers
GPIO.setup( 3, GPIO.OUT) # set GPIO3 as output
GPIO.setup( 13, GPIO.OUT) #set GPIO13 as output
GPIO.setup( 10, GPIO.OUT) #set GPIO10 as output
GPIO.setup( 5, GPIO.OUT) #set GPIO5 as output
counter = 0
while (counter < 1):
if random.random() <= 0.25:
GPIO.output( 3, False)
GPIO.output( 13, True)
GPIO.output( 10, False)
GPIO.output( 5, False)
print("13 is lit")
print(random.random())
sleep(1)
elif random.random <= 0.5:
***
since the random number between 0 and 1 is not less than 0.25 and it will not light up the other, this is ok
***
GPIO.output( 3, True)
GPIO.output( 13, False)
GPIO.output( 10, False)
GPIO.output( 5, False)
print("3 is lit")
print(random.random())
sleep(1)
elif random.random() <= 0.75:
GPIO.output( 3, False)
GPIO.output( 13, False)
GPIO.output( 10, True)
GPIO.output( 5, False)
print("10 is lit")
print(random.random())
sleep(1)
else:
GPIO.output( 3, False)
GPIO.output( 13, False)
GPIO.output( 10, False)
GPIO.output( 5, True)
print("5 is lit")
print(random.random())
sleep(1)
GPIO.output( 3, False)
GPIO.output( 13, False)
GPIO.output( 10, False
GPIO.output( 5, False)
#!
添加到正则表达式中。
试试这个正则表达式:
*
由于您未在正则表达式中指定 cs.toString().matches("^[a-zA-Z. ]*$")
,因此它会尝试仅匹配一个字符。
更新:
您可以进一步简化代码并进行更改
*
到
if(cs.equals("")){ // for backspace
return cs;
}
if(cs.toString().matches("[a-zA-Z. ]*")){
return cs;
}
return cs;
差异在于你现在使用的是 if(cs.toString().matches("[a-zA-Z. ]+")){
return cs;
}
return "";
而不是+
。
*
因此无需明确检查 * matched 0 or more occurrences
+ matched 1 or more occurrences
。
答案 1 :(得分:0)
只需使用以下代码
替换if条件中的代码即可if(cs.toString().matches("[a-zA-Z. ]*")){
return cs;
}