Java从字符串中删除多个字符

时间:2014-01-05 17:25:43

标签: java

我正在玩字符串操作,我想做类似的事情,当用户输入课程名称时: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。

4 个答案:

答案 0 :(得分:1)

只删除正则表达式^\w+\s

中的第一个单词

这说:

  1. ^仅从字符串的开头匹配
  2. \w+找到一个或多个非空白字符,不要贪婪,所以一找到匹配就停止
  3. \s一个空格字符“。

答案 1 :(得分:1)

如果我理解了这个问题,请尝试:

String newLesson = lesson.replaceAll("(Windows|Linux|Unix)\\s+", "");

<强>输出:

Input lesson name: 
Linux Administration
Administration

答案 2 :(得分:1)

这里有两个选择......

  1. 创建一个正则表达式术语,其中包含您要删除的所有术语,我认为类似下面的内容(但我不是正则表达式专家)。

    replaceAll("(Windows|Linux|Unix)\\s+", ""); 
    
  2. 将要删除的字词存储在列表中,然后循环显示,删除每个字词。

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