![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Я с RegExp'ом на Вы, нужна помощь:
Есть выражение /[\s\n]*/ig Оно удаляет все пробелы и переносы. А нужно, чтобы текст в кавычках (", ') сохранялся в первозданном виде. Помогите составить выражение.
__________________
if (love is true) break my.heart; |
|
|||||
|
Modus ponens
|
А внутри кавычек могут быть заэкранированые кавычки?
Хотя... в любом случае в цикле будет проще сделать, регулярка если и получится, то будет очень длинная... Или сначала разбить текс на части, без кавычек, заменить там, где нужно, и потом соеденить - так проще всего будет.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 18.02.2011 в 17:28. |
|
|||||
|
нет, заэкранированых кавычек в тексте по идее быть не должно. Там будут их HTML коды ( " )
__________________
if (love is true) break my.heart; Последний раз редактировалось Rzer; 18.02.2011 в 17:06. |
|
|||||
|
На 99% уверен что одним выражением не обойтись. Я бы сделал так - разбил текст на составляющие - то что в кавычках и обычный текст. И дальше бы уже работал с этими строками. Но и надо понимать что такие вещи как кавычки вложенные в кавычки - это вещь вовсе не тривиальная и тоже одними регулярными выражениями определить их нельзя.
|
|
|||||
|
Modus ponens
|
Что-нибудь такое.
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(""));
}
__________________
Hell is the possibility of sanity |
|
|||||
|
Спасибо за ответы
__________________
if (love is true) break my.heart; |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|