StringUtils.isNumeric trả về true cho "" và false cho 7.8. Tất nhiên đây là hành vi được ghi lại tài liệu, nhưng thực sự không phải là thuận tiện nhất đối với tôi. Có cái gì khác (lý tưởng trong commons.lang) cung cấp một isActuallyNumeric?Có cách nào khác để StringUtils.isNumeric thực hiện ý tôi không?
Trả lời
Hãy thử isNumber(String)
từ org.apache.commons.lang.math.NumberUtils
.
Kiểm tra xem chuỗi [là] có phải là số Java hợp lệ hay không.
Số hợp lệ bao gồm hệ thập lục phân được đánh dấu bằng dấu 0x, ký hiệu khoa học và số được đánh dấu bằng loại loại (ví dụ: 123L).
Null
và trống Chuỗi sẽ trả vềfalse
.
CẬP NHẬT -
isNumber(String)
hiện đang bị phản đối. Sử dụng isCreatable(String)
để thay thế.
Cảm ơn bạn eav vì đã chỉ ra.
cách khác bạn có thể kiểm tra xem nếu có nhân vật phù hợp với một chữ số không như thế này ..
if(myStr.replaceAll("^$"," ").matches("[^\\d\\.]"))
sau đó bạn biết có những thứ trong đó mà không phải là 0-9 và/hoặc.
Dưới đây là tương đương với javascript (sửa đổi các chuỗi thử nghiệm) ...
Regex sẽ không tìm thấy (và từ chối) một chuỗi có nhiều dấu thập phân, chẳng hạn như "123.9.1" – bdares
Tôi nghĩ bạn có nghĩa là "[^ \\ D \\.]" ... nếu không bạn sẽ có chuỗi ký tự thoát xấu. –
@tim bender, vâng xin lỗi ... đó là lỗi đánh máy là vốn D –
Đây không phải là chính xác trong commons.lang
, nhưng nó sẽ làm việc.
try {
double d = Double.parseDouble(string);
// string is a number
} catch (NumberFormatException e) {
// string is not a number
}
Giải pháp này giả định bạn chỉ sử dụng số cơ sở-10, trong phạm vi tăng gấp đôi. Mà không phải là một giả định xấu hầu hết thời gian, và giải pháp này không tạo ra bất kỳ phụ thuộc mới. +1 – bdares
NumberUtils.isNumber không được dùng nữa.
bạn nên sử dụng
NumberUtils.isCreatable
hoặc
NumberUtils.isParsable
Tất cả đều hỗ trợ một giá trị thập phân điểm:
- NumberUtils.isCreatable hỗ trợ thập lục phân, số bát phân, ký hiệu khoa học và số đánh dấu với một loại vòng loại (ví dụ: 123L). Giá trị bát phân không hợp lệ sẽ trả về
false
(ví dụ: 09). Nếu bạn muốn nhận được giá trị của nó, bạn nên sử dụng NumberUtils.createNumber. - NumberUtils.isParsable chỉ hỗ trợ
0~9
và dấu thập phân (.
), bất kỳ ký tự nào khác (ví dụ: khoảng trống hoặc bất kỳ ký tự nào khác) sẽ trả vềfalse
.
Nhân tiện, triển khai thực hiện của StringUtils.isNumberic
có một số khác biệt giữa commons-lang và commons-lang3. Trong commons-lang, StringUtils.isNumberic("") là true
.Nhưng trong commons-lang3, StringUtils.isNumberic("") là false
. Bạn có thể nhận thêm thông tin bằng tài liệu.
- 1. Làm thế nào tôi có thể thực hiện ý nghĩa logic với bitwise hoặc mã hiệu quả khác trong C?
- 2. có cách nào để thực hiện UIModalTransitionStyleCoverHORIZONTAL (không FlipHorizontal)?
- 3. Tôi làm cách nào để thực hiện postMessage đa miền?
- 4. Có cách nào khác để thực hiện Clone trong Java không?
- 5. Có cách nào để thực hiện file_get_contents() không?
- 6. Có cách nào để thực hiện điều này không?
- 7. Tôi làm cách nào để sử dụng xác thực lược đồ hiện đại/khác với .Net?
- 8. Tôi có phải thực hiện StringIO.close() không?
- 9. Gợi ý để thực hiện giao diện dòng lệnh
- 10. Có thư viện java nào để thực hiện một sự khác biệt dựa trên từ không?
- 11. Làm cách nào để tôi có thể thực hiện các bài tập trong danh sách hiểu?
- 12. Tôi có thể thực hiện Caching trong MVC không, nếu có thì làm cách nào?
- 13. Làm cách nào để tôi có thể thực hiện "so sánh sâu" hoặc "khác biệt" trên hai Cấu trúc?
- 14. Làm cách nào để tôi có thể thực hiện `Chế độ xem 'để điền vào` RelativeLayout`?
- 15. Cách thực hiện ý định với nhiều hành động
- 16. Có cách nào khác để chết không?
- 17. Làm cách nào để thực hiện "khác biệt" của toàn bộ cây thư mục? Có phần mềm nào không?
- 18. Làm cách nào để tôi chỉ thực hiện mật khẩu với heroku chứ không phải github?
- 19. Các cách khác để thực hiện thao tác modulo
- 20. Có cách nào để "thực hiện" các lệnh echo
- 21. Làm cách nào để tôi có thể thực hiện giải mã LZW trong Java?
- 22. Làm cách nào để tôi có thể thực hiện truy vấn SQL 'NOT IN' nhanh hơn?
- 23. Làm cách nào để tôi có thể thực hiện nhận diện khuôn mặt trên iOS?
- 24. Những cách khác nhau để thực hiện DAG trong java
- 25. Làm cách nào để tôi có thể thực hiện AND và một số boolean không xác định trong postgresql?
- 26. Có cách nào để làm cho UserControl không thể thực hiện được không?
- 27. Làm cách nào để tôi có thể thực hiện Phát hiện va chạm trên hình chữ nhật được xoay?
- 28. Có cách nào "súc tích" để thực hiện đặt tên trong JavaScript không?
- 29. Tôi có thể vào lỗi sau khi thực hiện thực hiện trong VIM không?
- 30. Tôi làm cách nào để phát hiện người dùng có ở xa bàn phím không?
một số chuỗi như "5.f" hoặc "5.d" sẽ đăng ký dưới dạng số (tôi đoán có việc cần làm với ký hiệu kép hoặc ký hiệu nổi), nhưng các số khác như "5.x" thì không. – dstrube
Điều này là tốt hơn một chút. Thật không may: '** + 2 **' hóa ra là NOT isNumber(). – will
May mắn thay, isNumber ("** - 2 **") cho _true_. – will