2017-09-13 72 views
-3

在下面的代碼中,我試圖激活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語句(因爲有一個保存和.txt)
  • 「拯救goodbyehelloletmegooo.txt」應通過,因爲存在保存和.txt

它翔ULD在這些情況下,未通過:

  • 「拯救你好」它不會通過,因爲沒有.TXT
  • 「hello.txt的」它不會通過,因爲沒有保存

所有幫助表示感謝。

+3

你應該處理 「命令」,並在不同的操作 –

+0

「FILE_NAME」 有'字符串#startsWith'和'串#endsWith'。但是你應該真的分成單詞並分別處理它們。 – Thilo

回答

2

嘗試一些正則表達式,像這樣:

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

你可以使用一些基本約束Regex

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

進一步約束這一點。

+0

當OP想要使用正則表達式時,他/她應該使用一個真正有意義的正則表達式。你明白你的例子中的正則表達式是什麼意思,以及字符串是如何接受的? – Tom

+0

我想說明一個普遍的例子,OP可以根據需要在字符,數字或特殊字符之間進行選擇,我只允許字母,數字,下劃線和連字符,這些可以從這裏創建。 – Sameer

+0

廢話。你的正則表達式允許「保存」後跟一個空格,後面跟着任何字符(但只有一個),那麼___必須是大寫字母,那麼___必須是一個數字,然後___必須是下劃線,然後___必須至少有一個連字符,但它允許多個。 OP從來沒有說過這些角色的順序,他們是強制性的,每個角色中只有一個應該被允許。這就是爲什麼我問:你明白你的例子中的正則表達式是什麼意思?我想你不會。 – Tom

1

我認爲String::containsString::endsWith的組合將解決這個問題。

if (save.contains("something") && save.endsWith("something")){ 
    //do something 
} 
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!"); 
    }