仅当该字符串开头尚无此文本时,我才想在字符串开头添加子字符串(文本)。
示例:
// let's say I want to add "Has" at beginning (if doesn't exist)
$string_1 = "AnaHasSomeApples"; // we need to add
$string_2 = "HsSomeApples"; // we need to add
$string_3 = "HasApplesAlready"; // already exists at the beginning
我试过这个:
$string = (strpos($string, 'Has') === false ? 'Has' : '') . $string;
我知道做到这一点并不难。
我更感兴趣的是找到最快的(根据时间,而不是代码行数)可能的方法。
您可以尝试这种方法 - 检查前 3 个字符是否不等于“Has”,如果等于,则只需使用 $string_1,否则将“Has”与其连接。
$string_1 = (substr( $string_1 , 0, 3 ) !== "Has") ? "Has".$string_1 : $string_1;
echo $string_1;
如果您希望“Has”不区分大小写,那么您可以在使用条件检查时使用strtolower。
我正在检查 Has 是否不在位置 0,然后在“Has”前面加上现有字符串
您可以使用三元运算符来实现此目的,
$string_1 = "AnaHasSomeApples"; // we need to add
$string_2 = "HsSomeApples"; // we need to add
$string_3 = "HasApplesAlready"; // already exists at the beginning
echo "string_1: ". (strpos($string_1,"Has") !== 0 ? "Has".$string_1: $string_1)."\n";
echo "string_2: ". (strpos($string_2,"Has") !== 0 ? "Has".$string_2: $string_2)."\n";
echo "string_3: ". (strpos($string_3,"Has") !== 0 ? "Has".$string_3: $string_3)."\n";
输出
string_1: HasAnaHasSomeApples
string_2: HasHsSomeApples
string_3: HasApplesAlready
演示。
您可能喜欢这个解决方案:
首先从主字符串中删除您想要的字符串,以确保该字符串不存在于主字符串的开头,然后尝试在原始字符串的开头添加您想要的字符串。
$string = 'HasSomeApples';
$result = 'Has' . ltrim($string, 'Has');
如果您想避免编写条件,可以使用正则表达式模式。
如果
Has
不在字符串的前面,请将其添加到字符串的前面。
代码:(演示)
echo preg_replace('/^(?!Has)/', 'Has', $string);
// HasAnaHasSomeApples
// HasHsSomeApples
// HasApplesAlready