2017-02-16 108 views
0

我需要一些幫助才能正確實現使用.split.replace格式化傳遞給它的字符串值的方法。正確評估字符串值並使用JavaScript格式化它

根據此示例,字符串值爲HTML鏈接時間的9​​0%:<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 (或任何名稱傳遞)

任何幫助將不勝感激!

+1

更好地利用正則表達式,它更適合我的那種類型的問題。 –

+2

['.indexOf()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf)如果搜索值尚未返回'-1'發現,因此'if'條件是錯誤的,應該是'if(value.indexOf('')> -1){...}' – Andreas

+0

@ÁlvaroTouzón這是一個好主意。你有沒有想過在這種情況下可以發揮作用? – onmyway

回答

3

indexOf總是返回一個數字,而不是布爾值。如果找到,索引將爲零或更多。如果未找到,索引將爲-1。所以,你要檢查,如:

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

如果你可以有不同的標籤和間距我會建議使用像jQuery不太脆的東西:

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

我不能相信它滑倒了我的想法(返回一個值而不是布爾值)!感謝您的幫助! – onmyway

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字符串是安全的。 注#2str可以是HTML或字符串。

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

+0

感謝您的幫助。我通過數據庫檢索值,而不是從我的角度來看。 :) – onmyway

相關問題