2012-03-23 22 views
7

Tôi đang cố gắng viết một chương trình có thể làm toán với các từ tiếng Anh.Tôi có thể làm toán bằng các từ trong jQuery như thế nào?

Ví dụ, tôi muốn để có thể làm điều gì đó như

"four thousand and three" + "seven thousand and twenty nine" 

và nhận được kết quả như

"eleven thousand and thirty two" 

Có thể làm điều này trong jQuery?

+3

có, có thể có. bạn đã thử cái gì –

+8

Tôi đã thử hỏi về SO ... chưa có may mắn. – Daniel

+0

haha ​​... rực rỡ –

Trả lời

14

Có, tôi đã viết jQuery plug-in called Word Math đã được thực hiện cho mục đích chính xác này.

Ví dụ trong câu hỏi của bạn, bạn chỉ có thể sao chép và dán mã này

alert($.wordMath("four thousand and three").add("seven thousand and twenty nine")); 
//alerts "eleven thousand thirty two" 

và thì đấy! Bạn đã thực hiện một số từ toán.

Lời Math cũng có thể lại làm chuyển đổi từ số Javascript để từ và phó:

$.wordMath.toString(65401.90332) 
// sixty five thousand four hundred one and nine tenths and three thousandths and three ten thousandths and two hundred thousandths 

$.wordMath("three million four hundred and sixty seven thousand five hundred and forty two").value 
// 3467542 

You can read more about how to use the Word Math plugin on its readme page

EDIT: Hiện nay, một phiên bản của Word Math mà không phụ thuộc vào jQuery. Để sử dụng nó, bạn nên tải xuống tệp wordMath.vanilla.min.js trên kho lưu trữ gitHub thay vì tệp wordMath.jquery.js.

Việc sử dụng phiên bản ít jQuery không chính xác giống như phiên bản jQuery, ngoại trừ việc bạn không cần tiền tố $. trong các cuộc gọi. Nói cách khác, thay vì làm

$.wordMath("fifteen").add("eighteen") 

bạn sẽ thay viết

wordMath("fifteen").add("eighteen") 
+2

Bạn đã đọc được suy nghĩ của tôi chưa? – Daniel

+0

Tôi tò mò tại sao điều này cần phải là một plugin jQuery? Tôi không thấy những gì sức mạnh jQuery có trên đồng bằng js cũ ở đây? –

+4

@Chimoo: Hai từ: jQuery! – Daniel

2

Như bạn đã biết, bạn không thể thực hiện các phép toán trên chính chuỗi, do đó bạn cần bắt đầu bằng cách chuyển văn bản của bạn thành các giá trị số.

Sau khi bạn thực hiện các phép toán trên các giá trị số, bạn có thể chuyển đổi các giá trị trở lại thành chuỗi và xuất kết quả.

+0

D'oh! Tôi đã hy vọng cho "đi đến [URL], cài đặt [awesome] plugin, sao chép/dán văn bản từ SO câu hỏi vào tập tin .js, và thì đấy!" – Daniel

3

Bạn có thể sử dụng thư viện, nhưng nếu bạn muốn viết mã riêng của bạn, bạn có thể bắt đầu với một cái gì đó như thế này.

<script type="text/javascript"> 

var equation = "one plus two"; 
var arrayOfWords = equation.split(" "); 
var functionToEvaluate = ""; 

for(i in arrayOfWords){ 
    functionToEvaluate = functionToEvaluate + GetNumericOrSymbol(arrayOfWords[i]); 
} 

var answer = eval(functionToEvaluate); 
alert(answer); 
//Then your method GetNumericOrSymbol() could so something like this. 

function GetNumericOrSymbol(word){ 
    var assocArray = new Array(); 
    assocArray['one'] = 1; 
    assocArray['two'] = 2; 

    //rest of the numbers to nine 

    assocArray['plus']='+'; 

    //rest of your operators 

    return assocArray[word]; 
} 
</script> 

Điều gì đó giống như lấy mảng ra khỏi cuộc gọi hàm sẽ giúp tối ưu hóa nó. Đã có rất nhiều niềm vui bằng văn bản này.

+0

Sau khi bạn nhận được câu trả lời của bạn thì bạn có thể trải qua quá trình ngược lại để tạo chuỗi. –

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