Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.04.2015, 21:49
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 1  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
По умолчанию String - удалить символ по номеру и добавить

Приветствую! Такой вопрос возник к знатокам, вроде бы простой, но следуя инструкциям адобовского хелпа результат не работает, что-то там упустил.

есть строка txt:String, мне необходимо в цикле(var i) при нахождении нужного символа его удалить, вставить после него новый символ(не заменить следующий а вставить с расширением строки)

Код AS3:
if (input.charAt(i) == "n")
{
 
txt=txt.replace(i,  "");//заменить на пустое место(удалить из строки)
 
txt = txt.slice(i,"new");//замена следующего, то есть i+1 который встал на его место
 
{

Старый 29.04.2015, 22:32
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 2  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Код AS3:
var text:String = ':::bc:::bc:::bc'; // исходный текст
var index:int; // 
var search:String = 'b'; // символ который нужно искать
var length:int = 2; // сколько символов нужно удалить после совпадения
var replace:String = '+'; // на что заменить
 
while ((index = text.indexOf(search)) > -1)
{
	text = text.substring(0, index) + replace + text.substring(index + length);
}
 
trace(text); // :::+:::+:::+

Старый 29.04.2015, 22:39
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 3  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
OlmerDale, благодарю за оперативный и конкретный ответ!

Старый 29.04.2015, 22:48
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цикл - это пещерный способ. Есть такая замечательная вещь как регулярные выражения. Все это можно свести к простому
Код AS3:
var str:String = ":::bc:::bc:::bc";
str = str.replace(/bc/g, ""); // g - значит искать все совпадения в строке, без остановки на первом
trace(str); // :::::::::

Старый 29.04.2015, 23:08
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 5  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Тогда напишите регулярку, где ищется один символ, а заменяется два.

Старый 29.04.2015, 23:17
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 6  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
Напишите отдельно оба действия) в общем мне нужно не столько код, сколько понимание, так как применять я оба алгоритма буду и в разных местах
1) как взять нужный по индексу символ в строке и удалить
2) как добавить символ после определенного по номеру символа
Меня удивило, что для 2) нужно разделять строку, вставлять символ и соединять обратно, неужели для такого частого применения нет одной функции

Старый 29.04.2015, 23:17
OlmerDale вне форума Посмотреть профиль Отправить личное сообщение для OlmerDale Найти все сообщения от OlmerDale
  № 7  
Ответить с цитированием
OlmerDale
[+1 09.05.15]

Регистрация: Jan 2015
Сообщений: 113
Хотя это просто -
Код AS3:
text = text.replace(/b./g, '+');
Но что делать если значение на которое меняем удаленные символы, каждый раз уникальное?

Добавлено через 5 минут
Цитата:
Меня удивило, что для 2) нужно разделять строку, вставлять символ и соединять обратно, неужели для такого частого применения нет одной функции
А я хоть и новичок, но против прогресса. Много раз видел, как "неумение" распарсить строку приводит к чудовищным последствиям, когда нужно разобрать большой текст ( и это я не про as3 ).
А foreach?) Глядя на программистов своего уровня, я могу ещё и использованием циклов удивить Их тоже уже не модно использовать. По этому я и тащусь от canvas, там можно даже DO собственный создать.

Добавлено через 6 минут
Цитата:
Напишите отдельно оба действия
Читайте справку, там изложено так, что лучше уже не получится.

Старый 30.04.2015, 00:14
Фомич вне форума Посмотреть профиль Отправить личное сообщение для Фомич Найти все сообщения от Фомич
  № 8  
Ответить с цитированием
Фомич

Регистрация: Feb 2015
Сообщений: 63
Справка от Адоб не идеальна, я это вам говорю как профессиональный новичок) Всем спасибо за помощь, буду парсить дальше.

Старый 30.04.2015, 11:26
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Справка от Адоб не идеальна
Ничего идеального нет. Но она достаточно хороша, если сравнивать с другими языками. С той же джавой. В ас3 она просто наиподробнейшая

п.с. По регуляркам рекомендую почитать книгу Джеффри Фриддла - Регулярные выражения

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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