如果检测到空格,我如何切割字符串?

时间:2017-06-14 11:29:29

标签: javascript regex string

我有一些字符串一个接一个地出现。如果长度超过15个字符,我想在15个字符后切片所有内容,但不要在检测到空格之前切片(以保持可读性)。

我的逻辑目前是这样的:

                const text  = "Microsoft Server 2012 R2"; // text.length = 24
                let newStr = '';
                if(text.length > 15 ){ // true
                    newStr = text.slice(0, 15)
                }
                console.log(newStr);
                // Desired output: "Microsoft Server
                // Current output: "Microsoft Serve"

4 个答案:

答案 0 :(得分:4)

您可以使用此正则表达式替换来完成工作。在输入的前15个字符后,这匹配0个或更多非空白字符。



var s = 'Microsoft Server 2012 R2'
var r = s.replace(/^(.{15}\S*).*$/, '$1')

console.log(r)
//=> Microsoft Server




RegEx Demo

答案 1 :(得分:1)

您可以将任意前15个字符与LIMIT 5 / LIMIT 0, 5匹配,然后将0个或更多非空白字符与5匹配:



[^]{15}




请注意,[\s\S]{15}匹配任何字符其他而不是换行符,这就是我建议\S*(非空)或其便携式等效const text = "Microsoft Server 2012 R2"; let newStr = (m=text.match(/^[^]{15}\S*/)) ? m[0] : ""; console.log(newStr);的原因/ . / [^]

答案 2 :(得分:1)

你可以匹配第一个想要的字母并取出字符,直到找到一个空格。

var string = "Microsoft Server 2012 R2",
    short = string.match(/^.{15}[^ ]*/)[0];
    
console.log(short);

答案 3 :(得分:1)

function hasWhiteSpace(SubText) {
  return /\s/g.test(SubText);
}

调用此函数并检查子字符串中的空格,即SubText,它是文本的子字符串,直到15个字符。因此,如果该子字符串包含空格,您将获得一个boolen值。此功能还将测试TABs Present。