如何在JavaScript/PHP字符串中按指定数组元素插入换行符
解决方案
JavaScript 实现
先写一个正则转义工具函数处理特殊字符,再通过分割+拼接实现换行插入:
// 转义正则特殊字符 function escapeRegExp(str) { return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } // 核心处理函数 function addNewlinesAroundPhrases(originalStr, phrases) { // 构建匹配所有短语的正则(保留分隔符) const regexPattern = new RegExp(`(${phrases.map(escapeRegExp).join('|')})`, 'g'); // 分割字符串,同时保留短语本身 const splitParts = originalStr.split(regexPattern); // 去掉每个片段末尾多余空格,再用换行符拼接 return splitParts.map(part => part.trimEnd()).join('\n ') + '\n'; } // 测试示例 const originalString = "example string is cool and you're great for helping out A string is a sequence of characters"; const targetPhrases = [" is cool", "great for", "out"]; const result = addNewlinesAroundPhrases(originalString, targetPhrases); console.log(result);
运行后会输出你要的格式,每个目标短语前后都会插入换行,同时自动清理片段末尾的多余空格。
PHP 实现
用preg_split配合捕获组保留分隔短语,再拼接处理:
function addNewlinesAroundPhrases($originalStr, $phrases) { // 转义每个短语的正则特殊字符 $escapedPhrases = array_map(function($phrase) { return preg_quote($phrase, '/'); }, $phrases); // 构建匹配模式 $pattern = '/(' . implode('|', $escapedPhrases) . ')/'; // 分割字符串并保留分隔短语 $splitParts = preg_split($pattern, $originalStr, -1, PREG_SPLIT_DELIM_CAPTURE); // 清理每个片段末尾空格,用换行拼接 $processedParts = array_map(function($part) { return rtrim($part); }, $splitParts); return implode("\n ", $processedParts) . "\n"; } // 测试示例 $originalString = "example string is cool and you're great for helping out A string is a sequence of characters"; $targetPhrases = [" is cool", "great for", "out"]; $result = addNewlinesAroundPhrases($originalString, $targetPhrases); echo $result;
说明
两种实现的核心逻辑一致:
- 转义短语中的正则特殊字符,避免匹配出错
- 用正则分割原字符串,同时保留目标短语作为独立片段
- 清理每个片段的末尾多余空格,再用
\n拼接所有片段,最后补一个换行符
内容的提问来源于stack exchange,提问作者user12585152
相关产品推荐
相关产品推荐

