Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        6年前关闭。
                                                                                            
                
        
我有一组给出转换率的句子,例如


∫1 10,000件
∫1适用于10k SMTH
1200∫0.1的值
以3∫的价格卖出3000 Smth


所有这些句子都显示了∫虚构单位(INTEGRAL)的虚构货币比率(SMTH)。我需要某种方法来提取这两个单位之间的转化率。困难在于数字可以采用不同的格式设置(10,000或10000或10k),单位可以用不同的方式写(东西,SMTH和大写字母不同),单位的顺序也不同(“ x x表示∫x”或“∫x” x SMTH”),有时单位写为∫x或x∫。

TL; DR:以某种方式将上述字符串格式化为数学关系,但要注意许多不同的格式。

我知道这是很多问题,而且非常复杂。如果已经有类似的问题,我很乐意研究。

您问什么语言?最好是PHP或JS,但伪代码是一个好的开始

编辑:

var val = get sentence,
    integral,
    something;
val = val.replace(",", "").replace("k ", "000 ").replace("m ", "000000 ").replace("million ", "000000 ").replace(" million ", "000000 ").replace(" something", "SMTH").replace(" smth", "SMTH");
words = val.split(" ");
for (var i = 0; i < words.length; i++) {
  if (words[i].indexOf("$")!==-1) {
    integral = words[i].replace("∫" , "");
  } else if (words[i].indexOf("SMTH")!==-1) {
    something = words[i].replace("SMTH" , "");
  }
}


简化的javascript /伪代码

最佳答案

您已使用“ for”分隔了所有示例。因此,组合不多。您可以做的是找到一个标识每种货币的单词列表,一个与数字匹配的正则表达式,然后在左侧和右侧之间用“ for”分隔。
要处理每个短语,您将执行以下伪代码:

for each word:
    if it's a known currency identifier
        Store what is the currency
    else if it's a number
        Store the value
    else if it's the "for" word
        Change side
    end if
end for


完成此循环后,您将拥有一个数据结构,该数据结构的两边分别是哪种货币和多少金额。

10-06 06:55