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);
}
4

3 回答 3

5

你可以用一个非常简单的正则表达式来做到这一点: s/[^A-z]//g. 这将不替换字符串中不在 range 中的A-z所有字符,它封装了所有字母(大写和小写)。干脆做new_string = old_string.replaceAll("[^A-z]", "");

于 2012-11-02T19:08:48.150 回答
3

Since you're new to programming and don't want to involve in the RegEx world (yet), you can create a method that returns a String with letters only:

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();
}
于 2012-11-02T19:13:12.410 回答
1

您可以检查 astring是否仅alphabets使用正则表达式。下面是示例代码

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

或者您可以String.matches(regex)String API使用。您可以在此处阅读有关Java 中的 REGEX 的更多信息。

于 2012-11-02T19:05:18.387 回答