我有一个字符串,该字符串可能有也可能没有句点,如果要分割,请在后面加上句点。这是我的代码
let blurb = body.split('.')[0];
if (blurb.length > 1) {
blurb = blurb + '.';
}
我希望有一种更简洁明了的方法来实现这一目标。
答案 0 :(得分:1)
如果您真的只是想将其添加回去而不做其他任何事情...
let blurb = body.split('.').join('.');
但这是个禁忌。这是您的代码的钝头版本,可能有助于弄清一些事情。
var body = "Some sentences. In a paragraph.",
bodySplit = body.split('.'), // ["Some sentences"," In a paragraph", ""],
firstSentence = bodySplit[0],
firstSentenceHasChars = firstSentence.length > 1,
blurb = null;
if (firstSentenceHasChars) {
blurb = firstSentence + ".";
} else {
// ?
}
答案 1 :(得分:0)
我知道这不是每个人的功劳,但我走了正则表达式路线。但这可能会让您生病:
var str = 'blah.blah';
var reg = /([a-z]+)(.?)([a-z]*)/;
var arr = str.replace(reg, "$1,$3,$2").split(",").filter(s => s);
console.log(arr);
str = 'blahblah';
arr = str.replace(reg, "$1,$3,$2").split(",").filter(s => s);
console.log(arr);
答案 2 :(得分:0)
您可以将split与输出中所需的匹配数用作第二个参数(拆分中的第二个参数指定输出中所需的拆分元素数,在本例中,您可以将其添加为1)。
console.log( 'blah.blah'.split('.', 1)[0] + '.' )
console.log( 'blahblah'.split('.', 1)[0] + '.' )
答案 3 :(得分:0)
这是使用String.replace()
和正则表达式的一种方法。您只需将点替换为点,然后将任何点替换为点。
const dot = str => str.replace(/\..*$/, '.');
console.log(dot('hello. world'));
console.log(dot('bye bye.'));
console.log(dot('no dot here'));
答案 4 :(得分:0)
我不知道你想去哪里,但我会这么做:
"hohohosdsaeqwewe.kekekekekeke".replace(/([^.]*)\.([^.]*)/gi,(m,g1)=>g1+".")
如果句子不匹配,则返回自身,如果匹配,则取第一部分(点之前)并将点加回去。