Names to numbers: Difference between revisions
Content added Content deleted
m (Added the Sidef language) |
m (→{{header|Sidef}}: minor code fix) |
||
Line 1,301: | Line 1,301: | ||
# Groupings for thousands, millions, ..., quintillions |
# Groupings for thousands, millions, ..., quintillions |
||
static groups = /\d{4}|\d{7}|\d{10}|\d{13}| |
static groups = /\d{4}|\d{7}|\d{10}|\d{13}|\d{16}|\d{19}/; |
||
# Numeral |
# Numeral |
||
static num = / |
static num = /\d+/; |
||
str.trim!; # remove leading and trailing whitespace |
str.trim!; # remove leading and trailing whitespace |
||
Line 1,316: | Line 1,316: | ||
# tokenize other punctuation and symbols |
# tokenize other punctuation and symbols |
||
str.gsub!(/\$(.)/, {|a| |
str.gsub!(/\$(.)/, {|a| "$ #{a}" }); # prefix |
||
str.gsub!(/(.)([;:%'',])/, {|a,b| a |
str.gsub!(/(.)([;:%'',])/, {|a,b| "#{a} #{b}"}); # suffix |
||
nums.each { |key, value| str.gsub!(Regex.new('\b' + key + '\b'), value) }; |
nums.each { |key, value| str.gsub!(Regex.new('\b' + key + '\b'), value) }; |
||
Line 1,328: | Line 1,328: | ||
Regex.new('\b(\d) 100 (\d\d) (' + groups + ')\b'), |
Regex.new('\b(\d) 100 (\d\d) (' + groups + ')\b'), |
||
Regex.new('\b(\d) 100 (\d) (' + groups + ')\b'), |
Regex.new('\b(\d) 100 (\d) (' + groups + ')\b'), |
||
Regex.new('\ |
Regex.new('\b(\d) 100 (' + groups + ')\b'), |
||
Regex.new('\b100 (\d\d) (\d) (' + groups + ')\b'), |
Regex.new('\b100 (\d\d) (\d) (' + groups + ')\b'), |
||
Regex.new('\b100 (\d\d) (' + groups + ')\b'), |
Regex.new('\b100 (\d\d) (' + groups + ')\b'), |
||
Line 1,351: | Line 1,351: | ||
str.gsub!(/\b(\d\d) (\d) 100\b/, {|a,b| (a.to_i + b.to_i) * 100}); |
str.gsub!(/\b(\d\d) (\d) 100\b/, {|a,b| (a.to_i + b.to_i) * 100}); |
||
str.gsub!(/\b(\d{1,2}) 100\b/, {|a| (a.to_i * 100) }); |
str.gsub!(/\b(\d{1,2}) 100\b/, {|a| (a.to_i * 100) }); |
||
str.gsub!(/\b(\d{2}) (\d{2})\b/, {|a,b| a.to_i*100 + b.to_i}); |
str.gsub!(/\b(\d{2}) (\d{2})\b/, {|a,b| (a.to_i * 100) + b.to_i}); |
||
str.gsub!(regex[10], {|a| a.split(' ').map{.to_i}.sum }); |
str.gsub!(regex[10], {|a| a.split(' ').map{.to_i}.sum }); |
||
} |
}</lang> |
||
Usage: |
Usage: |