Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 以最佳方式解析字符串_String_Parsing - Fatal编程技术网

String 以最佳方式解析字符串

String 以最佳方式解析字符串,string,parsing,String,Parsing,假设我有一个字符串作为onehhhtwominusthreehkkseveneightjnine 现在我想解析这个字符串,从中得到数字。例如,这个字符串应该返回一个数组,[1,2,减3,7,8,9]。 整数的顺序应该保持不变 有谁能建议一种最佳的解析方法吗?谢谢。(您没有提到编程语言吗?) 我可能会搜索“减号”并检查它后面的数字。然后搜索“一”,然后搜索“二”,并记下它们的索引。这将提供足够的信息来映射和输出所需的结果和顺序 另一种选择是按顺序查看每个字符,将每个字符与10个选项进行比较。我不能

假设我有一个字符串作为
onehhhtwominusthreehkkseveneightjnine
现在我想解析这个字符串,从中得到数字。例如,这个字符串应该返回一个数组,[1,2,减3,7,8,9]。 整数的顺序应该保持不变

有谁能建议一种最佳的解析方法吗?谢谢。

(您没有提到编程语言吗?)

我可能会搜索“减号”并检查它后面的数字。然后搜索“一”,然后搜索“二”,并记下它们的索引。这将提供足够的信息来映射和输出所需的结果和顺序

另一种选择是按顺序查看每个字符,将每个字符与10个选项进行比较。我不能告诉你哪一个是最有效的-我认为这取决于可能的字符串总长度。我可能会写这两篇文章并对它们进行分析


如果要搜索的字符串不是过长的,那么我怀疑第二种方法可能更有效。这是因为,一旦找到匹配项,就可以消除对以下(已知)字符长度的搜索

也就是说,如果你有“abceightd”,一旦你发现了“e”及其“8”,你可以跳过四个字符。您也可以跳过a、b和c,因为它们不是10个选项中任何一个的起始字符


我假设您的选择是:

一,二,三,四,五,六,七,八,九,负

(您没有提到编程语言吗?)

我可能会搜索“减号”并检查它后面的数字。然后搜索“一”,然后搜索“二”,并记下它们的索引。这将提供足够的信息来映射和输出所需的结果和顺序

另一种选择是按顺序查看每个字符,将每个字符与10个选项进行比较。我不能告诉你哪一个是最有效的-我认为这取决于可能的字符串总长度。我可能会写这两篇文章并对它们进行分析


如果要搜索的字符串不是过长的,那么我怀疑第二种方法可能更有效。这是因为,一旦找到匹配项,就可以消除对以下(已知)字符长度的搜索

也就是说,如果你有“abceightd”,一旦你发现了“e”及其“8”,你可以跳过四个字符。您也可以跳过a、b和c,因为它们不是10个选项中任何一个的起始字符


我假设您的选择是:

一,二,三,四,五,六,七,八,九,负

假设a)您可以访问所选编程语言中的正则表达式,b)您可能的选择与Andy G所假设的一样。。。然后,此正则表达式可以选择与其关联的
减号分组的数字(如果存在):

/((?:minus)*(?:one|two|three|four|five|six|seven|eight|nine))/g
使用JavaScript的
RegEx.exec()
应用于您的示例字符串,例如,它提取:

one
two
minusthree
seven
eight
nine
如果需要,您可以在匹配的任何
减号之后轻松地放置空格。这有帮助吗?

假设a)您可以在选择的编程语言中访问正则表达式,b)您可能的选择与Andy G假设的一样。。。然后,此正则表达式可以选择与其关联的
减号分组的数字(如果存在):

/((?:minus)*(?:one|two|three|four|five|six|seven|eight|nine))/g
使用JavaScript的
RegEx.exec()
应用于您的示例字符串,例如,它提取:

one
two
minusthree
seven
eight
nine

如果需要,您可以在匹配的任何
减号之后轻松地放置空格。这有帮助吗?

您还没有完全定义问题。“三加一”可以接受吗?“加三”或“加一”怎么样?如果你有“一加二”,你需要做什么?一旦问题被完全陈述,就更容易,也就是说,找到一个解决方案。@AndyG这个字符串没有空格。加号不会在那里。3代表这个整数“-3”同一个数字可以出现多次吗?我得到的印象是,您最初可以执行九次搜索(搜索“一”、“二”等),尤其是如果数字按顺序出现;但我仍然认为未知数太多了。@AndyG数字可以以任何顺序出现。这可能是九分钟,也不限制它们发生的次数。我需要保持字符串中数字的顺序,因为您尚未完全定义问题。“三加一”可以接受吗?“加三”或“加一”怎么样?如果你有“一加二”,你需要做什么?一旦问题被完全陈述,就更容易,也就是说,找到一个解决方案。@AndyG这个字符串没有空格。加号不会在那里。3代表这个整数“-3”同一个数字可以出现多次吗?我得到的印象是,您最初可以执行九次搜索(搜索“一”、“二”等),尤其是如果数字按顺序出现;但我仍然认为未知数太多了。@AndyG数字可以以任何顺序出现。这可能是九分钟,也不限制它们发生的次数。我需要保持数字在字符串中的顺序