只包含字母的字符串

5

我刚开始学习Java编程,需要帮助。 创建一个字符串表格并让用户输入大小。随后用户输入字符串。我想打印字符,但不包括非字母的字符(例如: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个回答

5
你可以使用一个非常简单的正则表达式来实现这个,s/[^A-z]//g。这将用空字符串替换字符串中所有不在 A-z 范围内的字符,包括所有字母(大写和小写)。只需执行 new_string = old_string.replaceAll("[^A-z]", ""); 即可。

1
针对所建议的修改,消除“new_string”和“old_string”,并使用一个变量:包括这两个变量会使意图更清晰,并且通常最好将这样的值视为不可变的,而不是多次重新赋值给同一变量,即使在生产代码中也是如此。 - asthasr

3

如果你是编程新手,并且不想涉足正则表达式的世界(至少现在还不想),那么你可以创建一个方法,返回仅包含字母的 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();
}

1
您可以使用正则表达式检查一个字符串是否只包含字母。以下是示例代码:
String word = "java";
Pattern pattern = Pattern.compiles("[a-zA-Z]+");
Matcher matcher = pattern.matcher(word);
System.out.println(pattern.find());

或者您可以使用{{link1:String API}}中的String.matches(regex)。 您可以在此处了解有关Java中{{link2:REGEX}}的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接