我有一些字符串一个接一个地出现。如果长度超过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"
答案 0 :(得分:4)
您可以使用此正则表达式替换来完成工作。在输入的前15个字符后,这匹配0个或更多非空白字符。
var s = 'Microsoft Server 2012 R2'
var r = s.replace(/^(.{15}\S*).*$/, '$1')
console.log(r)
//=> Microsoft Server

答案 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。