2013-01-21 20 views
1

我有一個輸入字段,它具有自動完成功能(自定義自動完成)。如何將字符串拼接到javascript中的不平坦部分

當用戶輸入一個單詞時,應出現匹配短語,但用戶輸入的單詞應具有不同的顏色。

所以,舉例來說,如果我有一個像的「Hello World」字符串和用戶類型「LL」,他應該得到的含有「LL」相匹配的短語名單,但「LL」應該有不同的顏色。

所以我需要一種方法來拼接的「Hello World」,所以我會得到:["he","ll","o World"],然後我可以換「LL」<span>和風情呢。

回答

5

您可以使用替代

strhtml.replace (/yourstrToSearch/g, '<span class="cl">' + 'yourstrToSearch' + '</span >'); 

編輯:

yourstrToSearch = "ll"; 
var regex = new RegExp(yourstrToSearch, "gi"); 
$('#div1').html($('#div1').html().replace(regex, '<span class="cl">' + yourstrToSearch + '</span >')); 

Live Demo

3

一個可能的正則表達式的解決方案:

var part = "ll"; 
"Hello World".match(new RegExp("^(.*)(" + part + ")(.*)$")).slice(1); 
// >> ["He", "ll", "o World"] 
2

忘記拆分字符串。在這種情況下,它更容易與跨度更換比賽(LL在你的例子),像這樣:

'Hello World'.replace(/(ll)/g, '<span>$1</span>'); 

甚至更​​好,如果你想在文本中的每個LL有不同款式可以傳遞功能,像這樣替換功能:

var i = 0; 
'Hello Hello World'.replace(/(ll)/g, function(match) { 
    i++; 
    return '<span class="highlight-'+i+'">'+match+'</span>; 
}); 

// above returns - you can style highlight-1 .. n so each of them have different color 
'He<span class="highlight-1">ll</span>o He<span class="highlight-2">ll</span>o World' 
1

這裏的技巧是使用正則表達式,因爲他們會如果替換字符串包含AR失敗egex特殊字符,如點或大括號。因此,你只需要把這個字符串就是replace

str = 'Hello Hello World' 
sub = 'll' 
result = str.replace(sub, '<span>$&</span>') 

注意,如果有許多這僅替換的sub第一次出現,但是這可能是你想要的。

相關問題