Skip to content

截取字符串

尽可能长的截取字符串,但是不能超过限定长度。

js
function BreakText(str, maxWidth) {
    const canvas = document.createElement('canvas');
    const context = canvas.getContext('2d');
    
    function getTextWidth(text) {
        return context.measureText(text).width;
    }
    
    function doBreaktext() {
        let result = []
        let currentLine = '';
        
        for (let i = 0; i< str.length; i++) {
            const char = str[i]
            const testLine = currentLine + char;
            const testWidth = getTextWidth(testLine);
            if (testWidth > maxWidth) {
                result.push(currentLine)
                currentLine = char; // 开始新的一行
            } else {
                currentLine = testLine; // 继续添加字符
            }
        }
        
        result.push(currentLine); // 添加最后一行
        return result;
    }
    
    return doBreaktext()
}

// 测试
let str = "这是一个测试字符串,用于测试如何在限定宽度内截取字符串。可能很长很长,超过限定宽度。";
let maxWidth = 100; // 限定宽度
console.log(BreakText(str, maxWidth));