Просмотр полной версии : RegExp replace: не удалять пробелы из текста в кавычках
Я с RegExp'ом на Вы, нужна помощь:
Есть выражение /[\s\n]*/ig
Оно удаляет все пробелы и переносы. А нужно, чтобы текст в кавычках (", ') сохранялся в первозданном виде. Помогите составить выражение.
А внутри кавычек могут быть заэкранированые кавычки?
Хотя... в любом случае в цикле будет проще сделать, регулярка если и получится, то будет очень длинная... Или сначала разбить текс на части, без кавычек, заменить там, где нужно, и потом соеденить - так проще всего будет.
нет, заэкранированых кавычек в тексте по идее быть не должно. Там будут их HTML коды ( " )
Волгоградец
18.02.2011, 17:04
На 99% уверен что одним выражением не обойтись. Я бы сделал так - разбил текст на составляющие - то что в кавычках и обычный текст. И дальше бы уже работал с этими строками. Но и надо понимать что такие вещи как кавычки вложенные в кавычки - это вещь вовсе не тривиальная и тоже одними регулярными выражениями определить их нельзя.
Что-нибудь такое.
private function removeSpacesOutsideQuotes(input:String):void
{
var last:int;
var resPart:String;
var parts:Vector.<String> = new <String>[];
var result:Object;
var re:RegExp = /(["'])[^\1]*?\1/g;
while (result = re.exec(input))
{
resPart = result[0];
parts.push(
input.substring(
last, re.lastIndex - resPart.length).replace(/\s+/g, ""));
parts.push(resPart);
last = re.lastIndex;
}
trace(parts.join(""));
}
еще есть извращенный вариант split + join :о)
А как split / join учесть кавычки внутри кавычек? На первый взгляд я не увидел решения.
Пардон. Я неправильно понял задание. Подумал, что в кавычках всегда одно и то же. Спать мне пора.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.