[英]Java remove multiple characters from string
我正在玩字符串操作,并且我想做这样的事情,当用户键入课程名称:Windows Server时,该程序应删除Windows加空格字符并仅显示Server。 我设法使用以下代码来做到这一点:
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。 如何在我的regex Linux和Unix中使用?
如果用户输入Linux Administration,则该程序应仅显示Administration。
要仅删除第一个单词,您的正则表达式将^\\w+\\s
这说:
^
仅从字符串开头匹配 \\w+
查找1个或多个非空格字符,不要贪婪,因此请在找到匹配项后立即停止 \\s
空格字符”。 如果我理解这个问题,请尝试:
String newLesson = lesson.replaceAll("(Windows|Linux|Unix)\\s+", "");
输出:
Input lesson name:
Linux Administration
Administration
您在这里有两个选择...
创建一个包含要删除的所有术语的Regex术语,我认为类似以下内容的方法可以做到(但我不是Regex专家)。
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, ""); }
由于您只想删除第一个单词,并假设空格是定界符,因此可以在不使用正则表达式的情况下进行操作:
String newLesson = lesson.substring(lesson.indexOf(" ") + 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.