【问题标题】:Adding space before CAPITAL LETTERS in String [duplicate]在字符串中的大写字母之前添加空格[重复]
【发布时间】:2019-01-04 07:08:42
【问题描述】:

我正在尝试将字符串从“ANGEL PalmoliveDishLiqOrchard”格式化为“ANGEL Palmolive Dish Liq Orchard”

我使用了以下代码:

<?php
$t = 'ANGEL PalmoliveDishLiqOrchard ';
$t = preg_replace('/(?<!\ )[A-Z]/', ' $0', $t);
echo $t;
?>

这将返回 A N G E L Palmolive Dish Liq Orchard

我想格式化它 ANGEL Palmolive Dish Liq Orchard

【问题讨论】:

标签: php preg-replace


【解决方案1】:

如果您检查大写字母后跟小写字母...

$t = 'ANGEL PalmoliveDishLiqOrchard ';
$t = preg_replace('/(?<!\ )[A-Z][a-z]/', ' $0', $t);
echo $t;

你会得到

ANGEL Palmolive Dish Liq Orchard 

【讨论】:

  • 谢谢,但这已转换为“Angel Palmolive Dish Liq Orchard”,我希望 ANGLE 保持大写/大写。我有很多不同名称的相似字符串。
  • 请查看答案中的输出 - 这不会以 Angel Palmolive Dish Liq Orchard 的形式出现,除非您在其他地方处理它。
【解决方案2】:

我们可以尝试在以下外观上进行匹配:

(?<=[a-z])(?=[A-Z])

这将匹配字符串中紧随其后的是小写字母且紧随其后的是大写字母的每个位置。替换是单个空格,也就是我们在这些位置插入一个空格。

$t = 'ANGEL PalmoliveDishLiqOrchard ';
$t = preg_replace('/(?<=[a-z])(?=[A-Z])/', ' ', $t);
echo $t;

ANGEL Palmolive Dish Liq Orchard 

【讨论】:

  • 谢谢,但这已转换为“Angel Palmolive Dish Liq Orchard”,我希望 ANGLE 保持大写/大写。我有很多不同名称的相似字符串。
  • @miketyon 不,它没有。至少not according to this demo.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2017-08-31
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多