【问题标题】:Split by capital letters, no abbreviations用大写字母分割,没有缩写
【发布时间】:2015-12-27 17:58:42
【问题描述】:

我想用大写字母分割我的字符串,但前提是那些不是缩写。

考虑以下字符串:

  • ThisIsAText
  • 求救

第一个字符串应该变成This Is A Text,而第二个字符串应该保持SOS

我的做法是:

$old_str = "ThisIsAText";
$arr = explode ( '/(?=[A-Z])/', $old_str );
$new_str = implode ( " ", $arr );

这也可以只用 1 个函数来完成吗?
此外,这不考虑缩写。

【问题讨论】:

  • 我不认为explode采取正则表达式...o.O
  • 看看preg_split()

标签: php string


【解决方案1】:

我认为你应该像这样使用 preg_replace:

$result = trim(preg_replace("/(?<![\^A-Z])([A-Z])/", " $1", "ThisIsAText"));

这是在每个大写字母之前添加一个空格,前面没有另一个大写字母。

不幸的是,这并没有正确拆分“ThisIsAText”,因为 A 后面跟着一个大写的 T。

因此,更好地定义您认为的“缩写”将有助于提供更好的解决方案。

【讨论】:

  • 使用SOS 测试时,我得到SO S
猜你喜欢
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多