2010-11-09 12 views
8

Zakładając regex jest najlepszym sposobem, aby to zrobić, chciałbym, aby wybrać pierwsze słowo:Jak wybrać drugie słowo z jQuery i Regex ..?

<div class="name">Bob Marley</div> 

i używać go zastąpić drugie słowo w tej div tagu:

<div class="message">Hey friend, how are you?</div> 

tak, że końcowy wynik jest równy:

<div class="message">Hey Bob, how are you?</div> 

Aktualizacja

To jest składanka mojego rzeczywistego kodu tutaj. Zauważyłem, że po uruchomieniu, po prostu umieszcza tekst jquery w moim obszarze tekstowym, zamiast faktycznie wykonywać tę funkcję. Jest tak prawdopodobnie dlatego, że rysuję z danych wejściowych, które wymagają znaku val(), a nie tekstu w znacznikach div, jak sugerują powyższe przykłady.

$(".me_signup .name").bind("mouseup keyup", function(){ 
    $(this).siblings('.message').text(function(i,txt) { 
     var name = $(this).val().split(' ')[0]; 
     return txt.replace('friend', name); 
    }); 
}); 

To tworzy pole tekstowe z tym napisane w nim

function (i, txt) { 
    var name = $(this).val().split(" ")[0]; 
    return txt.replace("friend", name); 
} 

Odpowiedz

9

powinien być w stanie obejść się bez regex.

Przykład:http://jsfiddle.net/2R5kA/

$('div.message').text(function(i,txt) { 
    var name = $('div.name').text().split(' ')[ 0 ]; 
    return txt.replace('friend', name); 
}); 

Jeśli istnieje szansa, że ​​mogą istnieć pewne spacje przed nazwą, a następnie użyć jQuery's $.trim() method pierwszy.

Przykład:http://jsfiddle.net/2R5kA/1/

$('div.message').text(function(i,txt) { 
    var name = $.trim($('div.name').text()).split(' ')[0]; 
    return txt.replace('friend', name); 
}); 
+1

'return txt.replace (/ [\ w] + /, '' + nazwa);' aby zastąpić * drugie słowo *, a nie tylko "przyjaciel". – jensgram

+0

@jensgram - To prawda, chociaż myślę, że chodzi tutaj o to, że drugie słowo będzie "przyjacielem", ponieważ jest to ogólne powitanie. – user113716

+0

możesz również użyć wyrażenia regularnego w split: str.split (/ \ s/g) i dodać więcej symboli do podzielenia przez –

0

Można użyć tego wyrażenia regularnego, aby uzyskać drugie słowo, zakładając, że już dostał się do div jQuery:

\w+\s(\w+) 

grupa w nawiasach daje ty drugie słowo.

Lubię rozwiązanie patricks stosując podział lepiej choć ... :)

1

może Chcesz wypróbować tę funkcję, to działa, jeśli nie jesteś pewien, czy słowo to przyjaciel czy wróg czy coś innego, tak długo jak to drugie słowo, które chciałeś zastąpić. Po prostu wywołaj tę funkcję javascript na twojej stronie ... W mojej próbce dodałem link do wywołania skryptu. Nie zapomnij dołączyć biblioteki jquery.

<div class="name">Bob Marley</div> 
<div class="message">Hey friend, how are you?</div> 
<a onclick="demoMatchClick()">Change</a> 

<script type="text/javascript"> 
    function ReplaceSecondWord() { 

     var strRegExp = new RegExp('Hey (.+), how are you?'); 
     var strCurrentText = $(".message").html(); 
     var strName = $(".name").html().split(" "); 

     strCurrentText = strCurrentText.replace(strCurrentText.match(strRegExp)[1], strName[0]); 

     $(".message").html(strCurrentText); 

    } 

</script> 
+1

Wielkie dzięki za głosowanie! :) –

Powiązane problemy