【发布时间】:2017-03-14 15:36:55
【问题描述】:
我需要一个 PHP 和 JavaScript 中的函数,为标题添加带括号的年份。但如果标题包含带括号的单词,年份和单词应该共用括号,用“/”分隔。
foo("Ferrari (ABC)", 2016); // Ferrari (2016/ABC)
foo("Ferrari", 1979); // Ferrari (1979)
foo("X(Y)Z (PQR)", 1987); // X(Y)Z (1987/PQR)
目前,我检查模式,如果匹配则替换,如果不匹配则执行其他操作。可以将此功能简化为更简单(最好是单个)的操作吗?请提供一个完整的例子。
PHP:
function foo($title, $year) {
$pattern = "/(\()([A-Z]+\))$/";
if(preg_match($pattern, $title))
$title = preg_replace($pattern, "${1}".$year."/${2}", $title);
else
$title = "$title ($year)";
}
JavaScript:
function foo(title, year) {
var pattern = /(\()([A-Z]+\))$/;
if(pattern.test(title))
title = title.replace(pattern, "$1"+year+"/$2");
else
title = title + " (" + year + ")";
}
【问题讨论】:
-
使用
indexOf('(')? -
您在寻找速度吗?还是您正在寻找更少字节的代码?
-
更少的代码字节。或者主要是为了摆脱 if/else。但不以过于复杂的 RegEx 为代价。只是如果我想念一种简单而出色的方法。
标签: javascript php regex