Найти запятую в кавычках с регулярным выражением и заменить на HTML эквивалент - PullRequest
2 голосов
/ 13 июня 2011

Я смотрю в строку, такую ​​как:

"Hello, Tim"

Land of the free, and home of the brave

И мне нужно, чтобы она стала:

"Hello, Tim"

Land of the free, and home of the brave

Это я думал, было просто, но для моей жизниЯ не могу понять это.Я импортирую поврежденный CSV с тысячами записей через AJAX, поэтому мне просто нужно преобразовать запятые ВНУТРИ двойных кавычек.

Как мне поступить с JavaScript?Я не могу понять это.Я пытался

Ответы [ 4 ]

3 голосов
/ 13 июня 2011
var str = '"Hello, Tim"\n\
\n\
Land of the free, and home of the brave';

str
.split('"')
.map(function(v,i){ return i%2===0 ? v : v.replace(',',','); })
.join('"');

Проверьте MDC для реализации map() для неподдерживающих браузеров.

2 голосов
/ 13 июня 2011

С функцией обратного вызова , вероятно, проще replace:

s = s.replace(/"[^"]*"/g, function(g0){return g0.replace(/,/g,',');});

На первом шаге мы находим все кавычки и заменяем в них только запятые.

Вы даже можете разрешить экранирование кавычек:

  • Стиль CSV (с двумя двойными кавычками) - /"([^"]|"")*"/g
  • Строковый буквальный стиль - /"([^"\\]|\\.)*"/g
1 голос
/ 13 июня 2011

С указанной выше строкой в ​​качестве переменной html вы можете использовать следующий код:

var m = html.match(/"[\s\S]*"/);
html = html.replace(m[0], m[0].replace(/,/g, ','));

ВЫХОД

"Hello, Tim"

Land of the free, and home of the brave
0 голосов
/ 14 июня 2011

result = subject.replace(/("[^"]+?),([^"]*?")/img, "$1,$2");

Это будет правильно работать с вашим примером, единственная выгода - это не будет работать, если у вас есть несколько , внутри ".Если вам нужно, чтобы он работал с несколькими , внутри ", взгляните на this для более полного способа анализа данных CSV с помощью javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...