我正在玩字符串操作,我想做类似的事情,当用户输入课程名称时:Windows Server,该程序应删除Windows加上空格字符并仅显示服务器。我设法使用此代码执行此操作:
Scanner in = new Scanner(System.in);
String lesson;
System.out.println("Input lesson name: ");
lesson = in.nextLine();
String newLesson = lesson.replaceAll("Windows\\s+", "");
System.out.println("New Lesson is " + newLesson);
但现在我要删除Linux和Unix等多个字符。我将如何在我的正则表达式中包含Linux和Unix?
如果用户输入Linux Administration,程序应仅显示Administration。
答案 0 :(得分:1)
只删除正则表达式^\w+\s
这说:
^
仅从字符串的开头匹配\w+
找到一个或多个非空白字符,不要贪婪,所以一找到匹配就停止\s
一个空格字符“。答案 1 :(得分:1)
如果我理解了这个问题,请尝试:
String newLesson = lesson.replaceAll("(Windows|Linux|Unix)\\s+", "");
<强>输出:强>
Input lesson name:
Linux Administration
Administration
答案 2 :(得分:1)
这里有两个选择......
创建一个正则表达式术语,其中包含您要删除的所有术语,我认为类似下面的内容(但我不是正则表达式专家)。
replaceAll("(Windows|Linux|Unix)\\s+", "");
将要删除的字词存储在列表中,然后循环显示,删除每个字词。
List<String> terms = new ArrayList<>(Arrays.asList{"Windows\\s+", "Linux\\s+", "Unix\\s+"});
for(String term : terms) {
lesson = lesson.replaceAll(term, "");
}
答案 3 :(得分:1)
由于您只想删除第一个单词,并假设 space 是分隔符,您可以在没有正则表达式的情况下执行此操作:
String newLesson = lesson.substring(lesson.indexOf(" ") + 1);