2013-06-05 89 views
1

我正在寫一個Java程序從網站自動下載PDF。我的程序通過excel文件讀取,併爲excel文件中的每個帳號下載PDF。在瀏覽器中,帳戶是從菜單中選擇的,但菜單格式爲#storenumber - accountnumber(例如#1234 - 987654321)。我無法訪問商店號碼。一個簡單的解決方案就是忽略前x個字符,但一些商店號碼的長度不同,所以這是行不通的。Java正則表達式:忽略某個字符之前的所有字符。正則表達式

是否有可能讓java忽略 - 之前的所有字符,並且如果是這樣的話你能寫出這個表達式嗎?

我用它與硒和火狐webdriver,使它更難以簡單地分開和保存字符串。這意味着我沒有內存中的字符串,它來自瀏覽器。

這就是我的代碼看起來像如果我有店號(但我不)。

new Select(driver.findElement(By.id("ctl00_main_ddlAssocAccountNumbers"))).selectByVisibleText(storeNum + " - " + accountNum);

任何其他的解決方案或建議讚賞。

感謝, Torbir

回答

4

如果格式# storenumber - accountnumber固定好使用split()

accountNum = accountNum.split(" - ")[1]; 

編輯:
根據你更新的帖子和評論,我覺得你希望在使用Selenium的selectByVisibleText()方法時僅對用戶帳號進行部分匹配,該方法不接受任何通配符或重新輸入gular表達。

但在這裏就是你可以通過執行使用子字符串匹配實現這一行爲:

Select select = new Select(driver.findElement(
        By.id("ctl00_main_ddlAssocAccountNumbers"))); 
List<WebElement> listOfOptions = select.getOptions(); 
for (WebElement option : listOfOptions) { 
    String storeAndAcctNum = option.getText(); 
    if (storeAndAcctNum.contains(accountNum)) { // if sub-string matches 
     select.selectByVisibleText(storeAndAcctNum); // fire select as usual 
     break; // out of the loop 
    } 
} 
+0

這並不在我的情況下,真正的幫助,因爲我沒有保存的字符串。我在帖子中添加了更多信息。 – Torbir

+0

好的,所以在你的Excel表格中,你的單元格內容只有帳號(比如只有987654321)。那是對的嗎? –

+0

是的,這是正確的 – Torbir