Отменяющая эскейп строка в JavaScript (без использования JSON.parse)

#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") . Но я все еще не уверен, какова ваша цель здесь.