字符串只包含字母表

时间:2012-11-02 19:03:29

标签: java string

我是Java编程的新手,我需要帮助。 创建一个String表,用户给出大小。随后,用户给出String。我想打印字符,但没有不是字母表字母的字符(例如java!4 - > java,ja /?,。va - > java)

public static void main (String[] args) {

String[] x = new String[size];
int size;
String str= "";

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

System.out.print("Give me size: ");
size = Integer.parseInt(input.readLine());


    for(int i=0; i<size; i++){
    System.out.print("Give me a String: ");
    str = input.readLine();
    x[i]=str;
    }


}

我正在互联网上查找此代码:

    if (str.matches("[a-zA-Z]")){
System.out.println(str);
}

3 个答案:

答案 0 :(得分:4)

您可以使用非常简单的正则表达式执行此操作:s/[^A-z]//g。这将不替换字符串中不在A-z范围内的所有字符,其中包含所有字母(大写和小写)。只需new_string = old_string.replaceAll("[^A-z]", "");即可。

答案 1 :(得分:3)

由于您不熟悉编程并且不想参与RegEx世界(还),您可以创建一个仅返回String字母的方法:

public String getStringOfLettersOnly(String s) {
    //using a StringBuilder instead of concatenate Strings
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < s.length(); i++) {
        if (Character.isLetter(s.charAt(i))) {
            //adding data into the StringBuilder
            sb.append(s.charAt(i));
        }
    }
    //return the String contained in the StringBuilder
    return sb.toString();
}

答案 2 :(得分:0)

您可以检查string是否只有alaphabets正则表达式。 下面是示例代码

String word = "java";
Pattern pattern = Pattern.compiles("[a-zA-Z]+");
Matcher matcher = pattern.matcher(word);
System.out.println(pattern.find());

或者您可以使用String API中的String.matches(regex) 阅读REGEX in Java