2013-05-04 51 views
7

Tôi biết bạn có thể kiểm tra xem chuỗi có phải là số nguyên không bằng cách thực hiện Integer.parseInt("1234");
Nhưng điều tôi muốn làm là liên kết số nguyên bản với số nguyên.
tứcKiểm tra xem một chuỗi có phải là số

  • "One" == 1
  • "Hai" == 2
  • "Ba" == 3
  • "Hai mươi" == 20

Có một số thư viện tôi có thể sử dụng để làm điều này, hoặc tôi có phải lập trình tất cả điều này bằng tay không?

Lý do tôi muốn làm điều này, là tôi có một ứng dụng Android có nhận dạng giọng nói.
Sau đó, người dùng có thể đếm. Con số này được hiển thị trên màn hình.

EDIT
Sau một số thử nghiệm, tôi đã tìm ra rằng lớp SpeechRecognizer tôi sử dụng tự động phân tích số đến các số thực tế ...

+0

Bạn có thể sử dụng mẫu enum để thực hiện việc này. – BlackVegetable

+3

Chỉ cần ghi nhớ, rằng điều này sẽ có vấn đề nghiêm trọng i18n. – nothrow

+0

Câu hỏi tương tự: http://stackoverflow.com/questions/4062022/how-to-convert-words-to-number –

Trả lời

5

Tôi không chắc chắn nếu có một thư viện cho rằng nhưng here là một ví dụ tốt.

2

Theo tôi biết không có thư viện cho điều này nhưng bạn có thể nghĩ như thế này

tạo ba loại thẻ

a. một, hai, ba .................... chín

b. mười một đến mười chín, hai mươi, ba mươi, ............ chín mươi

c. trăm, nghìn, ........ và các giá trị lớn hơn

bây giờ phân tích chuỗi đầu vào của bạn và khớp với mã thông báo của bạn. Chỉ cần cho một ý tưởng cơ bản bạn có thể suy nghĩ như bước

này 1. tạo thẻ từ stirng tokenizer

bước 2. trận đấu đúng nhất chuỗi và kết hợp với thẻ

bước 3. trận đấu từng người một chuỗi từ đúng và phù hợp với thẻ và tính toán

ví dụ ONE THOUSAND FIVE HUNDRED FIFTY THREE

let sum = 0

chuỗi đầu tiên = ba để sum + = 3

chuỗi thứ hai = năm mươi để sum + = 50;

chuỗi thứ ba = Hàng trăm vì vậy bạn cần nhân chuỗi thứ tư với 100 và thêm tổng cộng + = f * 100 ..và như vậy trên

Đây chỉ là ý tưởng cơ bản. Vì vậy, bạn có thể thực hiện nó hoàn hảo sau khi lập kế hoạch thích hợp

Các vấn đề liên quan