如何仅在android

时间:2015-07-24 05:54:29

标签: java android

我在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 "";
                    }
                }
        });




请有人帮忙..

提前致谢!!

2 个答案:

答案 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; 
}