gpt4 book ai didi

objective-c - 正则表达式提取步骤数

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:56 26 4
gpt4 key购买 nike

我有一个本地化的字符串,在英语中看起来像这样:

"
5 Mile(s)
5,252 Step(s)
"

我的应用程序已本地化为从左到右和从右到左的语言,因此我不想对 step(s) 的顺序或数字的格式(例如 5,252 可以是 5.252,具体取决于用户区域设置)。所以我需要考虑可能包括诸如

Step(s) 5.252

以及上面的内容。

其他一些注意事项

  • 我所知道的是,如果 Step(s) 行在那里,它将在其自己的行上(因此在我的正则表达式中,我需要在字符串的每一端使用\n)
  • 完全不能保证 Mile(s) 信息会出现在字符串中,更不用说它会在 Step(s) 之前还是之后了

这是我对模式提取的尝试:

NSString *patternString = [NSString stringWithFormat:@"\\n(([0-9,\\.]*)\s*%@|%@\s*([0-9,\\.]*))\\n",
NSLocalizedString(@"Step(s)",nil), NSLocalizedString(@"Step(s)",nil)];

这似乎有两个问题:

  • XCode 指示上面模式字符串中第二个 \sUnknown escape sequence '\s'
  • 即使对于如下字符串也找不到匹配项:

0.2 Mile(s)
1,482 Step(s)

理想情况下,我会以本地化友好的方式从该字符串中提取 1,482。我应该如何修改我的正则表达式?

最佳答案

就正则表达式而言,也许这种方法可能有效 - 它只是按顺序匹配(使用命名组)每个数字对联,假设第一个是英里,第二个是步数。 ., 形式的小数是可选的:

(?<miles>\d+(?:[.,]\d+)?).*?(?<steps>\d+(?:[.,]\d+)?)

(我认为它应该是 \\s)- 我不是 ios 专家,但如果您可以使用正则表达式文字,它的可读性会更好。

regular expression demo

关于objective-c - 正则表达式提取步骤数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41557439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com