#javascript #split #escaping
#javascript #разделить #экранирование
Вопрос:
Я пытаюсь отменить форматирование строки (получить исходный символ t).
Я пробовал все это:
var s = "my t string";
var t = "\t"; // Backslashes are escaped because this is rendered on an <input>
// How do we split the string?
s.split(t); // ["my string"]
s.split(t.substring(1)); // Not working becuase t.substring(1) is just 't'
s.split(t.replace(/\\/g, "\")); // ["my string"]
// Expected result would be:
s.split('t'); // ["my ", " string"]
// Using JSON.parse works
s.split(JSON.parse('"' t '"')); // ["my ", " string"]
Является ли JSON.parse единственным способом сделать это?
Комментарии:
1. Почему вы пытаетесь избежать JSON.parse?
2. @JohnDvorak Без особой причины. Просто пытаюсь узнать, является ли это единственным подходом (или лучшим в любом случае).
3. Обозначение обратной косой черты является условным обозначением анализатора JavaScript. Фактический символ табуляции является допустимым символом сам по себе, и это то, что вы на самом деле хотите использовать в строке.
4. @Pointy правильно
t
только представляет символ табуляции в контексте строкового литерала. Символ табуляции, однако, по-прежнему является символом:" "
(строка, содержащая символ табуляции). Если вы это сделаете"somettext".split(" ")
, то это все еще работает, потому что оба представляют одно и то же. Скопируйте и вставьте в консоль, чтобы увидеть.5. @jllodra вы также можете просто выполнить поиск буквенного
t
вхождения в строках и заменить его символом табуляцииtext.replace(/\t/g, "t")
. Но я все еще не уверен, какова ваша цель здесь.