爲什麼我無法在數千人之前擺脫空白?如何用正則表達式在數千之前刪除空格? - 不尋常
我已經寫了這樣的方法來檢查,如果字符串可以解析爲double:
編輯:好的,因爲每個人都寫了同樣的答案我已經更新的方法 - 這是不尋常的情況
public static boolean isNumber(String test) {
// remove whitespaces
System.out.print("Test is - " + test);
test = test.replaceAll("\\s", "");
// test = test.replaceAll("[ \\t]", "");
// test = test.replaceAll("\\s+", "");
// test = test.replaceAll(" ", "");
System.out.print(" - now test is - " + test);
// match pattern - numbers with decimal delimiter as dot or comma
String decimalPattern = "([0-9]*)(\\.|\\,)([0-9]*)";
boolean match = Pattern.matches(decimalPattern, test);
System.out.println(" - Is this number? ===> " + match);
return match;
}
現在我瘋了。下面是我的一些方法的輸出:
[stdout] Test is - aasdfg - now test is - aasdfg - Is this number? ===> false
[stdout] Test is - aa sd fg - now test is - aasdfg - Is this number? ===> false
[stdout] Test is - 123.50 - now test is - 123.50 - Is this number? ===> true
[stdout] Test is - 123,50 - now test is - 123,50 - Is this number? ===> true
[stdout] Test is - 1 123.50 - now test is - 1 123.50 - Is this number? ===> false
輸出的最後一行是奇怪的!
建議 - 測試值來自HSSFCell#getStringCellValue()
- 也許這裏是問題。沒有評論String#replaceAll
的作品。
你的代碼應該work..where是你的'test'變量聲明..它被其他線程訪問 – Anirudha
我會簡化一切。 1)改變你的程序,使它不會從電子表格中獲取數據,但「1 123.50」是硬編碼的。它工作嗎?如果確實如此2)從電子表格中讀取值,但只包含該值並且沒有空格的值,所以不要替換東西,只是匹配。它工作嗎?如果是這樣的話3)現在在電子表格中具有單個值,但是具有需要剝離的空間...等等。繼續使它更復雜,直到你達到它打破的地步。它聽起來像另一個線程正在改變價值,或者有一個編碼問題... –
@Disco 3 1) - 硬編碼的作品 - 我意識到這一點,並測試2)在數千之前沒有空間(所以變量少於1000 )作品 - 所以3)它不是線程,但可能編碼 - 請看看彼得克羅蒂的回答 – robson