Próbuję wyodrębnić ciąg z większego ciągu, w którym dostaje wszystko między „:” a „;”.
obecny
Str = 'MyLongString:StringIWant;'
Pożądane wyjście
newStr = 'StringIWant'
javascript
regex
string
substring
Obrabować
źródło
źródło
Możesz także spróbować tego:
źródło
str.split(':').pop().split(';')[0]
może być szybszy niż używanie.shift()
Posługiwać się
split()
arrStr
będzie zawierać wszystkie ciągi rozdzielone przez:
lub;
Więc dostęp do każdego ciągu przez
for-loop
źródło
\[(.*?)\]
---> Krótko mówiąc, musisz uciec od nawiasów kwadratowych, ponieważ [] oznacza klasę znaków w wyrażeniu regularnym.@Babasaheb Gosavi Answer jest idealny, jeśli masz jedno wystąpienie podciągów („:” i „;”). ale gdy wystąpi wiele wystąpień, może to być nieco trudne.
Najlepszym rozwiązaniem, jakie wymyśliłem do pracy nad wieloma projektami, jest użycie czterech metod wewnątrz obiektu.
Kod
Tyle gadania, zobaczmy kod:
Jak używać?
Przykład:
źródło
RangeError: Maximum call stack size exceeded
wyjątku.źródło
Podoba mi się ta metoda:
źródło
Użyłem @tsds sposób, ale tylko przy użyciu funkcji podziału.
słowo ostrzeżenia: jeśli therre nie ma „:” w ciągu dostępu do indeksu „1” tablicy wyrzuci błąd! str.split (':') [1]
dlatego droga @tsds jest bezpieczniejsza, jeśli istnieje niepewność
źródło
źródło
Możesz użyć funkcji wyższego rzędu, aby zwrócić „skompilowaną” wersję swojego ekstraktora, dzięki czemu jest szybszy.
Dzięki wyrażeniom regularnym i kompilowaniu wyrażenia regularnego po zamknięciu dopasowanie JavaScript zwróci wszystkie dopasowania.
To pozostawia nam jedynie konieczność usuwania tego, co wykorzystaliśmy jako nasze znaczniki (tj .:),
{{
i możemy użyć do tego długości łańcucha z plasterkiem.Skompiluj raz i użyj wiele razy ...
Lub jednorazowe użycie ...
Spójrz także na
replace
funkcję Javascript, ale używając funkcji zastępującej argument (Zrobiłbyś to, jeśli na przykład robiłeś silnik mini szablonów (interpolacja ciągów) ... lodash.get może być również pomocny, aby uzyskać wartości, które chcesz zamienić ? ...Moja odpowiedź jest za długa, ale może komuś pomóc!
źródło
Możesz także użyć tego ...
źródło
Uzyskaj ciąg między dwoma podciągami (zawiera więcej niż 1 znak)
Uwaga: Używam
indexOf()
zamiast,lastIndexOf()
więc sprawdzi po raz pierwszy te ciągiźródło
strlength1
zmiennej? Zamiast tego należy użyć wartości wbudowanej. Nie jest również jasne, jakiego stylu obudowy używasz.strlength1
- bez stylu,whole_str
- skrzynia węża.Spróbuj tego, aby uzyskać podciąg między dwoma znakami za pomocą javascript.
Zaczerpnięte z @ Znajdź podciąg między dwoma znakami za pomocą jQuery
źródło
Korzystanie z jQuery :
strunowy
użycie :
wynik :
źródło
Stworzyłem małą funkcję, która może przechwytywać ciąg między, i może (opcjonalnie) pomijać kilka dopasowanych słów, aby pobrać określony indeks.
Ponadto ustawienie
start
nafalse
użyje początku łańcucha, a ustawienieend
nafalse
użyje końca łańcucha.ustawiony
pos1
na pozycjęstart
tekstu, którego chcesz użyć,1
użyje pierwszego wystąpieniastart
pos2
robi to samo copos1
, ale dlaend
i1
użyje pierwszego wystąpieniaend
dopiero postart
, wystąpieniaend
wcześniejstart
są ignorowane.źródło
To może być możliwe rozwiązanie
źródło