Форум Flasher.ru

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

Фомич 29.04.2015 21:49

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

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

Код AS3:

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


OlmerDale 29.04.2015 22:32

Код 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

OlmerDale, благодарю за оперативный и конкретный ответ!

caseyryan 29.04.2015 22:48

Цикл - это пещерный способ. Есть такая замечательная вещь как регулярные выражения. Все это можно свести к простому
Код AS3:

var str:String = ":::bc:::bc:::bc";
str = str.replace(/bc/g, ""); // g - значит искать все совпадения в строке, без остановки на первом
trace(str); // :::::::::


OlmerDale 29.04.2015 23:08

Тогда напишите регулярку, где ищется один символ, а заменяется два.

Фомич 29.04.2015 23:17

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

OlmerDale 29.04.2015 23:17

Хотя это просто -
Код AS3:

text = text.replace(/b./g, '+');

Но что делать если значение на которое меняем удаленные символы, каждый раз уникальное?

Добавлено через 5 минут
Цитата:

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

Добавлено через 6 минут
Цитата:

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

Фомич 30.04.2015 00:14

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

caseyryan 30.04.2015 11:26

Цитата:

Справка от Адоб не идеальна
Ничего идеального нет. Но она достаточно хороша, если сравнивать с другими языками. С той же джавой. В ас3 она просто наиподробнейшая

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


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

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