如何分割jQuery text()获取的无分隔符字符串并添加分隔符
解决jQuery text()获取的字符串分割问题
嘿,我来帮你搞定这个需求!这种文本拼接在一起的情况,其实有两种靠谱的解决思路,看你实际的DOM结构来选:
方案一:从DOM直接提取(推荐,更稳定)
如果你的游戏名原本是在单独的DOM元素里(比如每个游戏名对应一个<span>、<li>或者其他标签),那根本不用先拿拼接后的文本再拆分,直接遍历这些元素提取文本就好,例子如下:
假设你的HTML结构是这样的:
<div class="game-list"> <span>Rocket League</span> <span>Overwatch</span> <span>League of Legends</span> </div>
对应的jQuery代码:
// 提取每个游戏名到数组 const gameArray = $('.game-list span').map(function() { // 用trim()去掉可能的首尾空格 return $(this).text().trim(); }).get(); // 把jQuery对象转成普通数组 // 转成带/分隔的字符串 const formattedText = gameArray.join('/'); console.log(formattedText); // 输出:Rocket League/Overwatch/League of Legends console.log(gameArray); // 输出:["Rocket League", "Overwatch", "League of Legends"]
这个方法的好处是完全不用处理字符串拼接的问题,不会因为游戏名里的特殊字符或者大小写规则变化而出错,是最稳妥的方式。
方案二:处理已拼接的字符串(迫不得已时使用)
如果没办法从DOM直接提取,只能处理已经拿到的"Rocket LeagueOverwatchLeague of Legends"这种文本,那可以利用每个游戏名首字母大写的规律,用正则表达式拆分:
const rawText = $('.your-target-element').text(); // 1. 在每个大写字母前加/,2. 去掉开头多余的/ const formattedText = rawText.replace(/([A-Z])/g, '/$1').replace(/^\//, ''); // 转成数组 const gameArray = formattedText.split('/'); console.log(formattedText); // 输出目标格式 console.log(gameArray); // 得到拆分后的数组
不过要注意,这个方法依赖游戏名的首字母必须是大写,如果有游戏名内部包含大写字母(比如"NBA 2K24"),就会误拆分,所以只适合你当前给出的这种场景。
额外小提示
如果你的游戏名之间有固定的分隔规律(比如原本DOM里有隐藏的分隔符,或者文本里有其他特征),也可以针对性调整正则,但还是优先用方案一,毕竟DOM结构的信息比纯文本更可靠。
内容的提问来源于stack exchange,提问作者MydroX
相关产品推荐
相关产品推荐

