2011-05-24 43 views
2

這裏是輸入我的功能爲什麼java String中的「contains」方法返回找不到?

"<div class=\"xbox\">TESTING<span class=\"newbox\"><a href=\"javascript:void(0);\" id=\"btnbox\">Use a new box</a></span></div><div class=\"cardnumber\">***-1111</div></div>" 

當我做在它下面永遠不會返回任何東西,但-1

input.indexOf("cardnumber") 

這是不工作的原因嗎?當我做一個的indexOf(「格」),它返回正常...(幫助)

感謝球員(對不起,不張貼早些時候單元測試)

public Cart viewCart() { 
     ResponseAndCookies result = service.makeHttpRequestWithUrl("https://www.xbox.com/account/fakebox/"); 
     String response = result.getResponse(); 

     String availableCreditCard = "<div class=\"cardnumber\">***"; 
     if (response.contains(availableCreditCard)) { 
      return parseJson.parseCartAndReturnObject(response); 
     } 

     return null; 
    } 

    public class XboxViewCartServiceTest { 
    @Test 
    public void verify_cart_works_with_valid_login() { 
     FakeXboxCartParseJson jsonParser = new FakeXboxCartParseJson(); 
     XboxViewCartService sut = new XboxViewCartService(new FakeXboxViewCartHttpBase(), jsonParser); 
     Cart cart = sut.viewCart(null); 

     Assert.assertTrue(jsonParser.calledMethod); 
    } 

    class FakeXboxViewCartHttpBase extends XboxHttpService { 
     @Override 
     public ResponseAndCookies doHttpPostWithUrl(String url, ResponseAndCookies responseAndCookies, String json) { 
      ResponseAndCookies result = new ResponseAndCookies(); 
      result.setResponse("<div class=\"xbox\">TESTING<span class=\"newbox\"><a href=\"javascript:void(0);\" id=\"btnbox\">Use a new box</a></span></div><div class=\"cardnumber\">***-1111</div></div>"); 

      return result; 
     } 
    } 

    class FakeXboxCartParseJson extends XboxCartParseJson { 
     public boolean calledMethod = false; 
     @Override 
     public Cart parseCartAndReturnObject(String html) { 
      calledMethod = true; 
      return null; 
     } 
    } 
} 
+2

字符串中是否有非打印字符?在我看來,沒有理由在該輸入字符串中找不到'cardnumber'。 – 2011-05-24 01:05:28

+1

我們可以看看剩下的代碼嗎? – Ryan 2011-05-24 01:07:03

+4

似乎爲我工作。 http://ideone.com/voTHj – 2011-05-24 01:07:45

回答

3

顯然,這可以作爲你提供給它,所以只有3個選項:

  1. 字符串中有一些不可打印的字符;
  2. 當您讀取輸入並進行比較時存在編碼問題;
  3. 其他地方有什麼問題,我們無法看到,因爲您沒有提供足夠的代碼。

就目前而言,最好的最好的是第3項

請提供更多的代碼。

EDIT(2011-05-23 02:20):

感謝您的更新您的問題。所以,現在我們仍然不能確定,因爲我們錯過了端點返回的數據,但是如果沒有完全包含<div class="cardnumber">***,這是一個很好的機會。

還要確保您爲請求指定了正確的標頭,並且使用了有效的內容類型和字符編碼。請確保您的源文件沒有使用奇怪的編碼,因爲您可能會在不知道它的情況下輸入非標準的*字符。

+0

原來在我的部分單元測試中執行失敗(覆蓋是在錯誤的方法) - 感謝您抽出時間幫助這個顛簸的開發! – 2011-05-24 01:29:38

+0

@Toran:不客氣。適合每個人,這就是爲什麼它是好的,我們都是在這裏的懷疑論者:) – haylem 2011-05-24 01:29:48

+0

阿門!再次感謝! (我們可以通過任何機會將此舉標記爲刪除,但是保留您的代表賺錢?) - 我只問問,因爲這個問題並沒有真正爲其他人增值:( – 2011-05-24 01:32:54

相關問題