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