Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбить текст на части / взять текст между символами (https://javascript.ru/forum/misc/83015-razbit-tekst-na-chasti-vzyat-tekst-mezhdu-simvolami.html)

StartGames 27.08.2021 14:12

Разбить текст на части / взять текст между символами
 
К примеру у меня есть текст:

ID55 Здесь 1я часть текста ID55ID44 Здесь 2я часть текста ID44ID77 Здесь 3я часть текста ID77

1) Как мне проверить существует ли ID44 в этом тексте, и если есть тогда взять то что внутри ID44 (Здесь 2я часть текста)?

2) Как мне заменить содержимое внутри ID44, если я не знаю какой там может быть текст?
Т.е. по сути нужно заменить текст обернутый символами ID44 какой то текст ID44.



Есть ли решение для jquery?


Для чего это нужно?!
Есть корзина в которой могут одновременно находиться несколько товаров. И для каждого товара есть своя доп опция которую можно заполнить (текстовое поле). Я буду записывать Название товара и Текст опции в комментарий к заказу. Но покупатель может менять текст опции. Поэтому буду записывать между символов с ид товара и заменять содержимое конкретного товара в общем текстовом поле заказа.

ksa 27.08.2021 15:19

Цитата:

Сообщение от StartGames
Как мне проверить существует ли ID44 в этом тексте

https://javascript.ru/string/indexof

Цитата:

Сообщение от StartGames
взять то что внутри ID44

https://javascript.ru/string/split

Но что-то мне подсказывает - идешь ты не в том направлении... :(

ksa 27.08.2021 15:24

Цитата:

Сообщение от StartGames
Как мне заменить содержимое внутри ID44, если я не знаю какой там может быть текст?

Как вариант...
const str = 'ID55 Здесь 1я часть текста ID55ID44 Здесь 2я часть текста ID44ID77 Здесь 3я часть текста ID77'
alert(str.replace(/ID44.*(?=ID44)/, 'ID44Любой текст'))


Но ты идешь не в ту сторону... :(

рони 27.08.2021 15:25

Цитата:

Сообщение от StartGames
Есть ли решение для jquery?

<!DOCTYPE html>

<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
$(function() {
    $('div').contents().filter(function() {
    return this.nodeType == 3;
}).each((i, e) => {
let txt = ' abracadabra ';
e.nodeValue =  e.nodeValue.replace(/(ID44).*?(\1)/g, `$1${txt}$2`);
})
});
    </script>
</head>

<body>
<div>ID55 Здесь 1я часть текста ID55ID44 Здесь 2я часть текста ID44ID77 Здесь 3я часть текста ID77
</div>

</body>
</html>

ksa 27.08.2021 15:39

StartGames, вот тебе альтернативный вариант "хранения" корзины

const str = `[
	{"id": "ID55", "txt": "Здесь 1я часть текста"},
	{"id": "ID44", "txt": "Здесь 2я часть текста"},
	{"id": "ID77", "txt": "Здесь 3я часть текста"}
]`
const arr = JSON.parse(str)
alert(arr)
const i = arr.findIndex(o => o.id == 'ID44')
if (i != -1 ) alert(arr[i].txt)


Часовой пояс GMT +3, время: 18:38.