Просмотр полной версии : String - удалить символ по номеру и добавить
Приветствую! Такой вопрос возник к знатокам, вроде бы простой, но следуя инструкциям адобовского хелпа результат не работает, что-то там упустил.
есть строка txt:String, мне необходимо в цикле(var i) при нахождении нужного символа его удалить, вставить после него новый символ(не заменить следующий а вставить с расширением строки)
if (input.charAt(i) == "n")
{
txt=txt.replace(i, "");//заменить на пустое место(удалить из строки)
txt = txt.slice(i,"new");//замена следующего, то есть i+1 который встал на его место
{
OlmerDale
29.04.2015, 22:32
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); // :::+:::+:::+
OlmerDale, благодарю за оперативный и конкретный ответ!
caseyryan
29.04.2015, 22:48
Цикл - это пещерный способ. Есть такая замечательная вещь как регулярные выражения. Все это можно свести к простому
var str:String = ":::bc:::bc:::bc";
str = str.replace(/bc/g, ""); // g - значит искать все совпадения в строке, без остановки на первом
trace(str); // :::::::::
OlmerDale
29.04.2015, 23:08
Тогда напишите регулярку, где ищется один символ, а заменяется два.
Напишите отдельно оба действия) в общем мне нужно не столько код, сколько понимание, так как применять я оба алгоритма буду и в разных местах
1) как взять нужный по индексу символ в строке и удалить
2) как добавить символ после определенного по номеру символа
Меня удивило, что для 2) нужно разделять строку, вставлять символ и соединять обратно, неужели для такого частого применения нет одной функции
OlmerDale
29.04.2015, 23:17
Хотя это просто -
text = text.replace(/b./g, '+');
Но что делать если значение на которое меняем удаленные символы, каждый раз уникальное?
Добавлено через 5 минут
Меня удивило, что для 2) нужно разделять строку, вставлять символ и соединять обратно, неужели для такого частого применения нет одной функции
А я хоть и новичок, но против прогресса. Много раз видел, как "неумение" распарсить строку приводит к чудовищным последствиям, когда нужно разобрать большой текст ( и это я не про as3 ).
А foreach?) Глядя на программистов своего уровня, я могу ещё и использованием циклов удивить :D Их тоже уже не модно использовать. По этому я и тащусь от canvas, там можно даже DO собственный создать.
Добавлено через 6 минут
Напишите отдельно оба действия
Читайте справку, там изложено так, что лучше уже не получится.
Справка от Адоб не идеальна, я это вам говорю как профессиональный новичок) Всем спасибо за помощь, буду парсить дальше.
caseyryan
30.04.2015, 11:26
Справка от Адоб не идеальна
Ничего идеального нет. Но она достаточно хороша, если сравнивать с другими языками. С той же джавой. В ас3 она просто наиподробнейшая
п.с. По регуляркам рекомендую почитать книгу Джеффри Фриддла - Регулярные выражения
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.