获取字符串中最后一个换行符的最有效方法是什么

时间:2016-04-15 17:30:19

标签: javascript regex node.js

我有以下函数来获取字符串中的最后一个换行符位置:

function getLastLineBreak (content) {
    function reverse(s){
        return s.split("").reverse().join("")
    }
    var reversed = reverse(content)
    var index = content.length-reversed.indexOf("\n")
    return index
}

var myString = "some text \n next linet \n another link \n 123"
indexIs = getLastLineBreak(myString)
console.log("index is", indexIs)
console.log("text after", indexIs, myString.substr(indexIs,myString.length))

有没有办法使用正则表达式来获取nodejs中字符串中的最后一个换行位置?

3 个答案:

答案 0 :(得分:4)

您可以使用String.prototype.lastIndexOf

var myString = "some text \n next linet \n another link \n 123";

document.write(myString.lastIndexOf('\n'));

答案 1 :(得分:0)

这也应该有用

(.*$)

我们可以利用.与新行不匹配的事实。

<强> Ideone Demo

JS代码

var re = /(.*$)/g; 
var str = 'some text \n next linet \n another link \n 123';
matches = re.exec(str);
document.writeln(matches[1])

答案 2 :(得分:0)

我会用老式的方式做。 // Hash a password for the first time String hashed = BCrypt.hashpw(password, BCrypt.gensalt()); // gensalt's log_rounds parameter determines the complexity // the work factor is 2**log_rounds, and the default is 10 String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12)); // Check that an unencrypted password matches one that has // previously been hashed if (BCrypt.checkpw(candidate, hashed)) System.out.println("It matches"); else System.out.println("It does not match");

这应该从字符串的结尾开始并向后工作 在大多数情况下,最后一个换行符可能最接近。