SOURCE

let obj = {
    0: "您可以告诉我的你的载荷需",
    1: "。\n<think>\n好,我需要",
    2: "帮客户推荐适合石英石行业的叉车。首先看他们的需求:石英石产品搬运,每天使用8",
    3: "小时,属于重工况。\n\n石英石通常较重",
    4: ",所以额定载荷是关键。客户没有提供具体重量,但在产品列表中有",
    5: "多款电动叉车,额定载荷从2500kg到3800kg不等。考虑到石英石的重量,可能至少需要3吨以上的叉车。\n\n查看案例库,化肥仓储案例推荐了EFX322,额定载荷3200kg,适合高强度搬运。",
    6: '\n\n另外,EFX5-381额定载荷3800kg,虽然能耗稍高,但承载能力更强,适合更重的货物。',
    7: '视具体地面情况而定。\n\n</think>\n\n根据石英石行业重载、高频率的作业特点,推荐选用【*EFX5-351*】或【*EFX5-381*】两款电动平衡重叉车。',
    8: '',
}


let think = []; // 深度思考
let index = 0;
const startMarker = '<think>';
const endMarker = '</think>';
const cutMarker = '\n';
const brMarker = '</br>'
const thinkSplit = (content) => {
    // 开始深度思考,未结束
    if (content.includes(startMarker) && !content.includes(endMarker)) {
        console.log('走了??')
        // 开始标记 , 换行标记 ,并且切割标记 = 首次换行
        if (content.includes(cutMarker) && !content.includes(brMarker)) {
            let sign = content.split(startMarker)[1];
            content.replace(sign, '替换了第一段' + brMarker)
        } else if (content.includes(brMarker) && content.includes(cutMarker) && content.includes(brMarker)) {
            // 开始标记 + 换行标记 + 切割标记 = 已经被替换过了
            // 直接从切割标记处分割字符串并替换分割标记后的内容即可
            // 后续没结束的都按照这种方式分割
            let sign = content.split(brMarker)[1];
            content.replace(sign, '替换了第二段' + brMarker)
        }
    }

    // 深度思考已结束
    if (content.includes(startMarker) && content.includes(endMarker)) {
        if (!content.includes(cutMarker) && !content.includes(brMarker)) {
            // 说明文本没有换行,直接返归
            let text = extractContent(content, startMarker, endMarker);
            content.replace(text, '中间完整替换了')
        } else if (content.includes(brMarker)) {
            let before = content.split(brMarker)[1];
            let sign = before.split(endMarker)[0];
            content.replace(sign, '替换了最后一段' + endMarker)
        }
    }
}

function extractContent(str, startMarker, endMarker) {
    // 使用索引位置截取
    const startIndex = str.indexOf(startMarker) + 1;
    const endIndex = str.indexOf(endMarker);
    const result = str.substring(startIndex, endIndex);
    // 使用split方法
    return str.split(startMarker)[1].split(endMarker)[0];
}

// console.log(str1)

let indexs = 0;
let allText = '';
let timex = setInterval(() => {
    if (indexs > 7) return clearInterval(timex);
    let text = obj[indexs]
    allText += text
    // 有开头,有结尾,无换行,没有中断标记
    if (allText.includes(startMarker) && allText.includes(endMarker) && !allText.includes(cutMarker) && !allText.includes(brMarker)) {
        console.log('深度思考-整段')
        let text = allText.split(startMarker)[1]; // 拿结尾
        let replaceText = text.allText.split(endMarker)[0]; // 拿开头
        allText.replace(replaceText, '整段替换了')
        console.log('整段', allText)
        return;
    }
    // 有开头,有结尾,换行,没有中断标记
    if (allText.includes(startMarker) && !allText.includes(endMarker) && allText.includes(cutMarker) && !allText.includes(brMarker)) {
        console.log('深度思考-开头')
        let text = allText.split(startMarker)[1]; // 拿结尾
        // let replaceText = text.split(cutMarker)[0]; // 拿开头
        console.log('===',text)
        return;
    }
    // 有开头,有结尾,有换行,有中断标记
    if (allText.includes(startMarker) && !allText.includes(endMarker) && allText.includes(cutMarker) && allText.includes(brMarker)) {
        console.log('深度思考-没结束的中间部分')
        return;
    }
    // 有开头,有结尾,有换行,有中断标记
    if (allText.includes(startMarker) && allText.includes(endMarker) && !allText.includes(cutMarker) && allText.includes(brMarker)) {
        console.log('深度思考-结束部分')
        return;
    }
    indexs++;
    console.log(allText)
}, 1000)
console 命令行工具 X clear

                    
>
console