Actionscript 3: проблема с экранированием символа "\\" в полном пути к файлу - PullRequest
1 голос
/ 14 апреля 2009

Я считаю эту задачу сложной в AS3.

Извините, если мне не хватает чего-то базового / простого или какого-то встроенного метода, который может это сделать. Я не очень хорошо разбираюсь в RegExp.

У меня есть строка DYNAMIC , представляющая полный путь к файлу, который выглядит в точности как " d: \ temp \ abc.doc ". Я хочу извлечь часть filename из полной строки, например. abc.doc .

Мне известны такие техники, как использование "fullPath.lastIndexOf (" \\ ")" или регулярные выражения. Проблема в том, что это не работает, если у вас есть "\" на вашем пути. Работает с "/". Динамический путь не может быть изменен для замены "\" на "/" или любого другого разделителя. Моя интерпретация заключается в том, что, поскольку "\" используется для экранирования символов - ЛЮБОЙ символ, появляющийся ПОСЛЕ "\", игнорируется actionscript . например,

var fullPath:String = "A\B\C";

trace(fullPath.length); //**RETURNS 3** since "\B" & "\C" 
                        // are being treated as SINGLE chars

var bSlash:int =  fullPath.lastIndexOf("\\") //RETURNS **-1**

Ответы [ 3 ]

8 голосов
/ 14 апреля 2009

Вам необходимо использовать A\\B\\C (как в большинстве языков, в AS строковый литерал с неэкранированным \ создает escape-последовательность путем объединения со следующим символом). У меня такое ощущение, что вы не генерируете динамическую строку должным образом. Если предполагается, что строка является путем, то она должна содержать отдельный символ \ между фрагментами пути, экранируя обратную косую черту с помощью \\.

0 голосов
/ 16 апреля 2009

Как указал dirkgently, проблема заключается в использовании строкового значения вместо строкового литерала. Эта ссылка помогла мне разобраться в этом.

0 голосов
/ 14 апреля 2009

Я думаю, если использовать свойство valueOf в вашей строке, чтобы получить примитивную строку, вы можете получить то, что вы хотите. Actionscript 3 обычно создает большой причудливый строковый объект, который делает магические вещи с escape-символами, но примитивная строка больше похожа на строку JavaScript / ECMA, и обратные слеши должны отображаться как отдельные символы. Не проверял это, но попробуйте.

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