正确评估字符串值并在JavaScript中对其进行格式化

时间:2017-02-16 07:04:29

标签: javascript

我需要一些帮助才能正确实现一个方法,该方法使用.split.replace来格式化传递给它的字符串值。

根据此示例,字符串值为HTML链接的90%:<a href=\"http://www.fnb.co.za\" rel=\"nofollow\">SMC RBJacobs</a>。但有时它只包含一个普通的字符串值,例如:SMC RBJacobs

我认为通过检查.indexOf('</a>')来评估价值是一个好主意,但这会一直评估为真。(?)然后我在下一个时会收到错误在我的方法中执行的语句。

以下是我的方法:

if (col.name === 'twitter_tweet.source') {
    var str = value;
    if (value != null || value != undefined) {
        if (value.indexOf('</a>')) {
            var parts = str.split('"nofollow\">');
            var value = parts[1].replace('</a>', '');
            return value;
        }
    }
    return value;
}

无论字符串是否包含HTML标记,所需的输出:SMC RBJacobs (或传递的任何名称)

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

indexOf总是返回一个数字,而不是布尔值。如果找到,索引将为零或更多。如果未找到,则索引将为-1。所以你想检查:

if (value.indexOf('</a>') > -1) {

如果你可以有不同的标签和间距我建议使用像jQuery那样脆弱的东西:

if ($(value).length) {
  return $(value).text();
}

答案 1 :(得分:0)

我尝试按照以下方法:

var str = '<a href=\"http://www.fnb.co.za\" rel=\"nofollow\">SMC RBJacobs</a>',
el = document.createElement('div'),
result;

el.innerHTML = str;
result = el.textContent;

console.log(result);

注意#1 :我在此假设HTML字符串是安全的。 注意#2 str可以是HTML或字符串。

工作示例:https://jsfiddle.net/655uqc0f/