如何忽略字符串中的字符

时间:2017-09-13 12:41:48

标签: java

在下面的代码中,我试图激活if语句。在if语句中,xxxxx可以等于任何长度的任何字符,但最后的.txt是必需的。

import java.util.Scanner;

public class Example {
  public static void main(String args[]) {

    Scanner keyboard = new Scanner (System.in);
    String save = keyboard.nextLine();

    if ("save xxxxx.txt".equals(save)) {
        System.out.println("Success!");
    } else {
        System.out.println("Failed!");
       }
   }
}

我应该可以输入如下内容:

  • "保存hellothere.txt" 它应该传递if语句(因为有一个save和.txt)
  • "保存goodbyehelloletmegooo.txt" 应该通过,因为有一个保存和.txt

它不应该在这些情况下通过:

  • "保存你好" 它不会通过,因为没有.txt
  • " hello.txt" 它将无法通过,因为没有保存

所有帮助表示感谢。

4 个答案:

答案 0 :(得分:2)

尝试一些RegEx,如下所示:

if (save.matches("save .+\\.txt")) {

答案 1 :(得分:1)

我认为String::containsString::endsWith的组合可以解决这个问题。

if (save.contains("something") && save.endsWith("something")){
    //do something 
}

答案 2 :(得分:0)

试试这个,

    Scanner keyboard = new Scanner(System.in);

    String save = keyboard.nextLine();
    String s = "save "+save.replace("save", "").replace(".txt", "").trim()+".txt";

    System.out.println(s);
    System.out.println(save);

    if (s.equals(save))
    {
        System.out.println("Success!");
    }
    else 
    {
        System.out.println("Failed!");
    }

答案 3 :(得分:-1)

您可以使用Regex一些基本限制,例如

token.matches("save\\.[A-Z]*[0-9]*[_]*[-]*\\.txt"))

进一步限制这一点。