【问题标题】:How to reverse numbers in string and keep same order for letters如何反转字符串中的数字并保持相同的字母顺序
【发布时间】:2017-09-30 02:17:56
【问题描述】:

如何仅反转混合字符类型(字母、数字、空格)字符串中的数字,但保持字符串其余部分的顺序相同?

输入示例:

Dlasdf234dkl sdfkl8886adaf15adfjk7  asdflkj376661a s445s198

示例输出:

Dlasdf432dkl sdfkl6888adaf51adfjk7  asdflkj166673a s544s891

我尝试了一些 preg_* 函数和正则表达式,但我无法获得输出示例中演示的结果。

【问题讨论】:

  • 请展示您迄今为止所做的尝试,人们可能会就您的代码提供反馈。

标签: php arrays string sorting


【解决方案1】:

很高兴看到您尝试正则表达式,但我认为正则表达式是一个不错的计划。我可能会考虑做一个回调而不是仅仅匹配,像这样:

# match digits in the regex
echo preg_replace_callback('/[\d]+/',function($v){
    # reverse string
    return strrev($v[0]);
},$str);

【讨论】:

  • 我确实喜欢这个
  • 实际上,你和我的混合可能是最好的解决方案,当然也是最少的行数。我从没想过strrev(),所以这是个好主意。如果你这样做preg_replace_callback(),你可以删除所有循环并在字符串中找到它时进行每次替换。
  • TY 一次,我个人认为你的解决方案更好,因为你的代码比我的短。我可以说学习一些新的有用的东西,但这(你的代码解决方案)仍然不是我的知识水平。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
相关资源
最近更新 更多