JSFiddle - React, Tailwind, and code Playground
HTML
<p id="output">
</p>
JavaScript
function shuffleChineseText(text) {
// 筛选出汉字,并按每4个字符分组
var chineseCharGroups = [];
var tempGroup = [];
Array.from(text).forEach(char => {
if (/[\u4e00-\u9fa5]/.test(char)) {
tempGroup.push(char);
if (tempGroup.length === 4) {
chineseCharGroups.push(tempGroup);
tempGroup = [];
}
} else {
if (tempGroup.length > 0) {
chineseCharGroups.push(tempGroup);
tempGroup = [];
}
chineseCharGroups.push([char]);
}
});
if (tempGroup.length > 0) {
chineseCharGroups.push(tempGroup);
}
// 对每个分组内的第2个和第3个汉字进行调换
var shuffledChineseCharGroups = chineseCharGroups.map(group => {
if (group.length === 4) {
// 仅当分组内有4个汉字时,调换第2个和第3个汉字
return [group[0], group[2], group[1], group[3]];
}
return group;
});
// 将打乱后的分组重新组合成字符串
var shuffledTextArray = shuffledChineseCharGroups.reduce((acc, group) => {
return acc.concat(group);
}, []);
// 将数组转换回字符串
return shuffledTextArray.join('');
}
// 示例
var originalText = "研究表明,汉字的顺序并不一定能影响阅读,比如当你看完这句话后,才发现这里的字全都是乱的。";
var shuffledText = shuffleChineseText(originalText);
console.log(shuffledText);
document.getElementById("output").innerHTML = "原话:" + originalText + "<br /><br />转换:" + shuffledText