2015-12-11 124 views
2

我得到一個字符串,我必須檢查它是否以SUCCESS結尾。我得到的字符串是多行的,即它有\n。如果以SUCCESS.結尾,則必須返回true,如果以FAILED.結尾,則必須返回false。然而確保字符串中有 n以特定字符串結尾

pValidationReport.endsWith("SUCCESS.") 

評估爲false即使pValidationReportFAILED.結束如可以看到下面:

enter image description here

的方法如下:

private boolean isValidationSuccess(String pValidationReport) 
{ 
    if(pValidationReport.endsWith("SUCCESS.")) 
     return true; 
    else if(pValidationReport.endsWith("FAILED.")) 
     return false; 
} 

什麼我失蹤?

+6

如果問題是,它有一個新的行(或其他空格),使用['trim()'](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim%28%29)。例如。 'if(str.trim()。endsWith(「SUCCESS。」))' – khelwood

+3

另一個問題是你的程序可能沒有正確編譯,因爲你沒有告訴它什麼時候返回,當它以'SUCCESS'也不'失敗'。它被標記爲紅色的X.你應該確保所有**可能的字符串都有返回值,即使你知道它們都將以兩種方式之一結束。 – RealSkeptic

+1

@ khelwood yep maan它在'SUCCESS.'後有'\ n':'← – Mahesha999

回答

2

第一修剪那麼字符串chcek爲的endsWith()

pValidationReport.trim().endsWith("SUCCESS.") 

Java的字符串修剪方法是,在使用從字符串的開頭和結尾除去多餘的空格一個實例方法。 String Trim方法用於字符串對象或文字。在Java中,字符串是不可變的,所以一旦它們被創建,內容就不能被修改。由於這個原因,結果將是一個新創建的字符串對象,在字符串的兩端都沒有空格。 很明顯,修剪完字符串後,它會返回一個新的字符串對象。如果在兩側沒有修剪空間,則將返回String類型的同一對象而不是新的對象。

如果參數表示的字符序列是由此對象表示的字符序列的後綴,則endsWith()方法返回true,否則返回false。

+0

你確實覆蓋了我的編輯:^) –

1

如果您輸入的字符串在您要查找的子字符串後面有空白字符,它將不匹配。你可能使用正則表達式爲宗旨:

private boolean isValidationSuccess(String pValidationReport) 
{ 
    Pattern successPattern = Pattern.compile(".*SUCCESS\\.\\s*$"); 
    return successPattern.matcher(pValidationReport).matches(); 
} 

的\ S *確保成功。即使後面有任意數量的空格,製表符,換行符,回車符,換頁符和垂直製表符,末尾的字符串也會被識別。 它也能夠將模式移動到最後的實例變量,然後只用匹配器在你的方法,節省了調用編譯():

private final Pattern successPattern = Pattern.compile(".*SUCCESS\\.\\s*$"); 

private boolean isValidationSuccess(String pValidationReport) 
{ 
     return this.successPattern.matcher(pValidationReport).matches(); 
} 
相關問題