2013-09-05 27 views
6

Pracuję w ramach bardzo ścisłych ograniczeń dotyczących pakowania i mam klienta, który jest nieubłagany w swojej prośbie, więc jestem zmuszony zrobić coś w .js, że " raczej tego nie rób.Uzyskiwanie wszystkich znaków po ostatnim znaku "-" w ciągu znaków

W każdym razie, oto.

Mam opinie klientów. Pod koniec tych recenzji mam "- Stany Zjednoczone" lub "- Australia". Zasadniczo na koniec każdej recenzji mam "- [lokalizacja]". Muszę wyciągnąć ten tekst z tekstu opinii, a następnie wstawić go w zakres. Używam jQuery, więc chciałbym się z tym uporać.

Wyjaśniłem, jak przeprowadzić każdą recenzję i wstawić ją tam, gdzie jest mi potrzebna, ale nie wiem, jak pobrać ten ciąg tekstu z każdej recenzji, a następnie usunąć ją z każdej recenzji. Tam naprawdę mogłem skorzystać z pomocy.

Przykład tekst:

<div class="v2_review-content"> 
    <h4>These earplugs are unbelievable!</h4> 
    <p class="v2_review-text">These are the only earplugs I have ever used that completely block out annoying sounds. I use them at night due to the fact I am an extremely light sleeper and the slightest noise will wake me up. These actually stick to the ear in an airtight suction and do not come out at all until I pull them off in the morning. These are as close to the perfect earplug as you can get! - United States</p> 
    <p class="v2_review-author">Jimmy, March 06, 2013</p> 
</div> 

Mam też underscore.js dostępne czy to pomaga.

+1

Znajdź każde wystąpienie '" - "' w swoim ciągu, uzyskaj ostatni, cały tekst po tym jest twój kraj. usuń go ze sznurka i umieść go w nowym elemencie, dołącz do tagu akapitu. –

+2

Więc, co już wypróbowałeś? Czy utknąłeś na wyodrębnianiu ciągu znaków z tego kodu HTML? Lub na temat analizy lokalizacji? Zmieniając istniejący DOM? – millimoose

+3

Co próbowałeś do tej pory? Dlaczego to nie działa? Co się dzieje zamiast tego? Pomóż nam pomóc. –

Odpowiedz

13

Nie potrzeba jQuery dla rzeczywistej ciąg manipulacji - trochę niezgrabne, ale łatwe do zrozumienia:

text = 'Something -that - has- dashes - World'; 
parts = text.split('-'); 
loc = parts.pop(); 
new_text = parts.join('-'); 

Więc

loc == ' World'; 
new_text == 'Something -that - has- dashes '; 

Białe spacje można przyciąć lub zignorować (ponieważ często nie ma to znaczenia w HTML).

8

Najpierw podziel mieszanie na "-", co da ci tablicę strun między kreskami. Następnie użyj go jako stosu i wyrzuć ostatni element i wywołaj przycinanie, aby usunąć wszystkie te brzydkie spacje (chyba że oczywiście spodobają Ci się białe spacje).

"String - Location".split('-').pop().trim(); // "Location" 

Więc przy użyciu jQuery byłoby

$('.v2_review-text').html().split('-').pop().trim(); // "United States" 

lub używając wanilia JS

var text = document.getElementsByClassName('v2_review-text')[0].innerHTML; 
text.split('-').pop().trim(); // "United States" 
+0

Dobra odpowiedź. [Tutaj jest jsFiddle] (http://jsfiddle.net/PyZxh/), który implementuje twoją odpowiedź. (Chciałem zobaczyć, jak to działa i działa świetnie). Możesz modyfikować/uwzględnić w swojej odpowiedzi. – gibberish

3

Najprostszym sposobem jest prawdopodobnie użyć jQuery aby uzyskać element, a natywna obsługa JavaScript, żeby uzyskać ciąg:

var fullReview = $('.v2_review-text').text(); //assumes only one review exists, adjust for your use. 
var country = fullReview.substring(fullReview.lastIndexOf(' - ') + 1); //TODO correct for -1 if ' - ' not found. 

To tylko dowód koncepcji; reszta powinna być stosunkowo łatwa do wymyślenia. Niektóre rzeczy patrzeć podczas gdy uczysz: jQuery each

+1

Na pewno nie wygląda jak natywna JS ... – Shomz

+0

Który pobierze dowolny tekst po pierwszym myślniku, OP poprosił o ostatni afaik. –

+0

@Shomz: prawda, dostosowane! – Chris

1
var completeText = $('.v2_review-text')[0].value; 
var country = completeText.substr(completeText.lastIndexOf('-'), completeText.lenght - 1); 
+0

To działało dla mnie, var completeText = $ ('. V2_review-text') [0] .value; var country = completeText.substr (completeText.lastIndexOf ('-') + 1, completeText.lenght); – srijishks

2

Spróbuj coś takiego

str2 = str.substring(str.lastIndexOf("-")) 
2
var val = $('.v2_review-text').text(); 
var city_array = val.split('-'); 
var city = city_array[city_array.length - 1]; 

Mam nadzieję, że pomogłem Ci kolego.

Powiązane problemy