Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получить символ переноса строки. (http://www.flasher.ru/forum/showthread.php?t=150182)

cpu 07.02.2011 20:09

Получить символ переноса строки.
 
Можно ли как-нибудь узнать в строке, место переноса строки?
т.е. например парсю строку String посимвольно..

gloomyBrain 07.02.2011 20:12

Cимвол будет "\n" (то есть сравнивать текущую буковку надо с ним)

cpu 07.02.2011 20:22

спс..почему-то не думал что эти символы сохраняются в string
-----------------------------
Как узнать "пробел"?
"&nbsp" не работает...

i.o. 07.02.2011 20:39

Цитата:

Сообщение от cpu (Сообщение 971316)
спс..почему-то не думал что эти символы сохраняются в string
-----------------------------
Как узнать "пробел"?
"&nbsp" не работает...

Код AS3:

var space:String = " ";


cpu 07.02.2011 20:44

Код:


var space:String = " ";

при
Код AS3:

if (str.charAt(i) == " ") ...

не срабатывает.

Psycho Tiger 07.02.2011 20:58

Код AS3:

var str:String = "Find space";
trace("Space at ", str.indexOf(" "), " position");
var i:int = str.length;
while (i--) if (str.charAt(i) == " ") trace("Space at ", i, " position");

Код:

Space at  4  position
Space at  4  position


cpu 07.02.2011 21:09

Если написать строку так: "string:String = '123 456 789 ';", то пробелы находит.
Если импортировать строку из XML файла, нет.. Пробовал и в String(xmlStr) оборачивать, и .toString(), не помогает.

Тогда 2-ой вопрос, как удалить все пробелы в строке?

VitaliyKrivtsov 07.02.2011 21:16

пробелы по умолчанию игнорируются, нужно свойству XML#ignoreWhitespace присвоить значения false.

Psycho Tiger 07.02.2011 21:19

Вы пишите компилятор?)

Проще всего все пробелы удалить регуляркой.
Код AS3:

var str:String = "string:String = '123 456 789 ';";
trace("Space at ", str.indexOf(" "), " position");
var i:int = str.length;
while (i--) if (str.charAt(i) == " ") trace("Space at ", i, " position");

Код:

Space at  13  position
Space at  28  position
Space at  24  position
Space at  20  position
Space at  15  position
Space at  13  position

Почти по теме.

cpu 07.02.2011 21:24

[
Цитата:

Вы пишите компилятор?)
, нет, хотя как-то было дело, тупо нашел библиотеку, посмотрел на производительность, и понял что у меня-то уж точно не получится что-то вразумительней написать.)

Цитата:

Проще всего все пробелы удалить регуляркой.
, сижу как раз читаю доки по ним.

Цитата:

Почти по теме.
, спасибо, помогло..

ps_spectre 07.02.2011 21:37

Кстати, еще зависит откуда строку получать, иногда перенос строки может быть как
CRLF -- Возврат каретки (0x0A) ('\r') / Подача строки (0x0D) ('\n')
то бишь в строке идти как "\r\n"

а по второму вопросу, как уже заметил Psycho Tiger, можно использовать разные регулярки. )
например так:
Код AS3:

var s:String = "some  string     lll   ";
 
s = s.replace(/[ ]/g, "");
 
trace(s);

но в след. посте i.o. привел гораздо более правильный вариант с точки зрения рег. выражений.
s = s.replace(/\s/g, "");

i.o. 07.02.2011 22:00

'\s' - любой пробельный символ.
'\t' - табуляция.
Оба варианта работают в рег. выражении. Вариант с табуляция может применятся и без рег. выражений. Про первый ('\s') — не скажу, т.к. не пробовал.

cpu 07.02.2011 22:38

еще один вопрос по выражениям..
как объеденить несколько условий в regExp ?
т.е. мне надо удалить из строки все пробелы и все "undefined".

ps_spectre 07.02.2011 23:02

я не спец по регуляркам, но можно например так:
Код AS3:

s = s.replace(/(\s)|(undefined)/g, "");


cpu 08.02.2011 17:20

Спасибо..Эти регулярные выражения с наскока не понять..надо будет глубже почитать..


Часовой пояс GMT +4, время: 01:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.