2012-12-06 8 views
5

mój kodu:wsteczne ciągi nie zmieniając kolejność wyrazów w zdaniu

Próbowałem poniższy kod, ale kolejność słów zmieniają

var str = "Welcome to my Website !"; 

alert(str.split("").reverse().join("")); 

To daje wynik jako

! etisbeW ym ot emocleW

Ale potrzebuję wyniku jako

emocleW ot ym etisbeW !

Oznacza to, że nie chcę zmieniać kolejności słów.

+0

Nie znam się na Javie ani Javascript, więc nie powinienem komentować niczego tutaj. Ale mam dla ciebie jedną radę, zamiast używać 'wbudowanej funkcji ', spróbuj zrobić to samo w' bez 'używając' wbudowanego wywołania funkcji', które poprawi twoje logiczne myślenie. W każdym razie Powodzenia –

+0

Dzięki za twoją radę. – User1674987

Odpowiedz

17

Użyj tego:

var str = "Welcome to my Website !"; 
alert(str.split("").reverse().join("").split(" ").reverse().join(" ")); 
+0

Krótkie i słodkie. Działa idealnie. Dzięki. – User1674987

+0

+1 Imponujący !!! –

+0

Zastanawiasz się, właściwie jak działa zgodnie z oczekiwaniami w ramach jednego wiersza wyciągu? – User1674987

11

Można podzielić na przestrzenie, a następnie użyj map odwrócić liter w każdym słowie:

alert(str.split(" ").map(function(x) { 
    return x.split("").reverse().join(""); 
}).join(" "));​ 
+2

Uwaga: tylko w nowszych przeglądarkach. (I o to mi nie chodzi, przyklejają starych użytkowników przeglądarki, ale możesz.) – Amadan

4

dla starszych wsparcia przeglądarki można spróbować tego,

var str = "Welcome to my Website !"; 

String.prototype.str_reverse= function(){ 
return this.split('').reverse().join(''); 
} 

var arr = str.split(" "); 
for(var i=0; i<arr.length; i++){ 
arr[i] = arr[i].str_reverse(); 
} 

alert(arr.join(" ")); //OUTPUT: emocleW ot ym etisbeW ! 
+0

Działa idealnie. Dzięki. – User1674987

Powiązane problemy