Yon*_*ing 4 wolfram-mathematica
我听说我们可以用英文单词来表达Mathematica中的数字.喜欢使用百来表达100.哪个功能可以做到?
一个基本上等同于dreeves解决方案的解决方案(但在他的回答时不可用)将是WolframAlpha[]直接从Mathematica 打电话(这需要互联网连接).例如,
WolframAlpha["6 million 2 hundred and 12 thousand and fifty two",
{{"Input", 1}, "Plaintext"}]
Run Code Online (Sandbox Code Playgroud)
返回字符串
"6212052"
Run Code Online (Sandbox Code Playgroud)
所以我们可以构造以下函数来返回实际的数字
textToNumber[num_String] :=
Module[{in = WolframAlpha[num, {{"Input", 1}, "Plaintext"}]},
If[StringMatchQ[in, NumberString], ToExpression[in], $Failed]]
Run Code Online (Sandbox Code Playgroud)
它也适用于小数和负数,例如textToNumber["minus one point one"].
请注意,我们可以要求除"Plaintext"输出之外的其他内容.找出可用内容的最简单方法是输入一些数字,例如,WolframAlpha["twelve"]当您按下每个"pod"右侧的⨁标志时,探索可用的选项.它也值得探索文档,在那里您可以找到有用的输出"格式",如"MathematicaParse"和"PodIDs".
我们也可以走另一个方向:
numberToText[num_Integer] := WolframAlpha[ToString[num],
{{"NumberName", 1}, "Plaintext"}]
Run Code Online (Sandbox Code Playgroud)
我找不到正确的咒语来获得非整数的口语短语形式.如果有人知道正确的咒语,或者W | A获得此能力,请随时更新此答案.遗憾的是SpokenString,没有选择将数字作为口头短语的选择.