JavaScript已拆分,但以简洁的方式保留了最后一个字符

时间:2019-02-17 20:00:39

标签: javascript

我有一个字符串,该字符串可能有也可能没有句点,如果要分割,请在后面加上句点。这是我的代码

let blurb = body.split('.')[0];
if (blurb.length > 1) {
    blurb = blurb + '.';
}

我希望有一种更简洁明了的方法来实现这一目标。

5 个答案:

答案 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+".")

如果句子不匹配,则返回自身,如果匹配,则取第一部分(点之前)并将点加回去。