Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在每80个字符后插入换行符_Javascript - Fatal编程技术网

Javascript 如何在每80个字符后插入换行符

Javascript 如何在每80个字符后插入换行符,javascript,Javascript,我有一根很长的绳子 我想在每80个字符后添加,这样它就可以很好地显示在内部HTML中 有什么简单的方法吗?用长字符串替换(/({80})/g,“$1” 检查此处:将0,1替换为0,80,并将('is')与'' console.log("google is very fast".match(new RegExp(".{0,1}", "g")).join('is')); 这是学术版(也是): 功能折叠(输入、线宽、线性阵列){ 线性阵列=线性阵列| |[]; 如果(input.length尝试以下

我有一根很长的绳子

我想在每80个字符后添加

,这样它就可以很好地显示在内部HTML中


有什么简单的方法吗?

长字符串替换(/({80})/g,“$1


检查此处:

0,1
替换为
0,80
,并将('is')与
'
'

console.log("google is very fast".match(new RegExp(".{0,1}", "g")).join('is'));

这是学术版(也是):

功能折叠(输入、线宽、线性阵列){
线性阵列=线性阵列| |[];
如果(input.length尝试以下操作:

yourString = yourString.replace(/(.{1,80})/g, '$1<br/>')
yourString=yourString.replace(/(.{1,80})/g,“$1
”)

您还可以将文本包含元素的宽度设置为
80em
(它不能正好容纳80个字符,因为
em
是字母
m
的宽度,因此您可能希望将其设置得更低一些)

如果您想要快速解决方案,可以使用以下算法:

功能文本折叠(输入,行大小){
常量输出=[]
让outputCharCount=0
让outputCharsInCurrentLine=0
对于(变量i=0;ilineSize-2){
输出[outputCharCount++]='\n'
outputCharsInCurrentLine=0
}否则{
输出字符当前行++
}
}
返回输出。连接(“”)
}
document.getElementsByTagName('pre')[0]。innerHTML=textFold('0123456789abcdefghijklmnopqrstuvwxyz',10)
键入答案的脚本变体:

导出类FrameworkUtil{
公共静态foldText(文本:字符串,字符数:数字,buildArray:string[]=[])){
如果(文本长度0){
line=line.子字符串(0,idx);
nextIdx=idx;
}
buildArray.push(行);
返回FrameworkUtil.foldText(text.substring(nextIdx)、charCount、buildArray);
}
}

使用String.substring()…你可以阅读它。你能用css来做吗?似乎你想用javascriptyes来取代css。arun我可以用css使用“word wrap:break word;”来做,它不能精确地容纳80em…当然,除非他使用单空格字体(你复制了我的答案吗?:P jk,我知道这是一个简单的答案)@克里斯,这就是我在回答中所说的。也不是,我没有复制你的答案,我是从iPhone上回答的,所以我看不到发布的新答案,我键入slow
:P
@chris-当有一种简单的方法来做时,这不是复制。我很好奇你为什么这样做。为什么在你的例子中你使用
0,1
,然后添加了指令,用
0,80

替换它们,而不是仅仅在示例中使用
0.80

?@chris-l我不记得了。但我想我可能已经试过自己直接粘贴到那里了。
var arrayOfLines = fold(longString, 80);
var foldedString = arrayOfLines.join('<br/>');
yourString = yourString.replace(/(.{1,80})/g, '$1<br/>')
export class FrameworkUtil {

    public static foldText(text: string, charCount: number, buildArray: string[] = []) {
        if (text.length <= charCount) {
            buildArray.push(text);
            return buildArray;
        }
        let line = text.substring(0, charCount);
        const lastSpaceRgx = /\s(?!.*\s)/;
        const idx = line.search(lastSpaceRgx);
        let nextIdx = charCount;
        if (idx > 0) {
            line = line.substring(0, idx);
            nextIdx = idx;
        }
        buildArray.push(line);
        return FrameworkUtil.foldText(text.substring(nextIdx), charCount, buildArray);
    }
}