我是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;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在互联网上查找此代码:
if (str.matches("[a-zA-Z]")){
System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)
你可以用一个很简单的正则表达式做到这一点: s/[^A-z]//g。这将不替换字符串中不在 range 中的A-z所有字符,它封装了所有字母(大写和小写)。简单地做new_string = old_string.replaceAll("[^A-z]", "");。
由于您是编程新手并且还不想涉足正则表达式世界,因此您可以创建一个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();
}
Run Code Online (Sandbox Code Playgroud)