Всем привет подскажите C# код с помощью которого можно заменить к примеру 5 пробел в тексте на точку.
Спасибо!
// Текст для обработки
string text = project.ExecuteMacro(project.Variables["txt"].Value);
// Обработка текста "Замена"
project.Variables["res"].Value = Macros.TextProcessing.Replace(text, @"\ \ \ \ \ ", "." + " ", "Regex", "All");
Попробовал не работает. Немного не то, надо чтоб он добавлял точки во всём тексте.C#:// Текст для обработки string text = project.ExecuteMacro(project.Variables["txt"].Value); // Обработка текста "Замена" project.Variables["res"].Value = Macros.TextProcessing.Replace(text, @"\ \ \ \ \ ", "." + " ", "Regex", "All");
Попробовал не работает. Немного не то, надо чтоб он добавлял точки во всём тексте.
То есть, есть переменная с текстом, есть переменная какой номер пробела заменить на точку во всём тексте, к примеру заменить каждый десятый пробел точкой во всем тексте.
// Текст для обработки
string text = project.ExecuteMacro(project.Variables["txt"].Value);
// Обработка текста "Замена"
project.Variables["res"].Value = Macros.TextProcessing.Replace(text, @"\ ", "." + " ", "Regex", "Range", "5");
Он заменяет только один пробел, нужно чтобы каждый 5 менял, готов задонатить за помощь.C#:// Текст для обработки string text = project.ExecuteMacro(project.Variables["txt"].Value); // Обработка текста "Замена" project.Variables["res"].Value = Macros.TextProcessing.Replace(text, @"\ ", "." + " ", "Regex", "Range", "5");
Хз есть ли на обычных регулярках решение. @doc потом подскажет если есть. Можно костылем на C# делать в цикле последовательную замену первого вхождения, за пример брался этот пост "Regex.Replace единичная замена вхождения":Он заменяет только один пробел, нужно чтобы каждый 5 менял, готов задонатить за помощь.
string text = project.Variables["txt"].Value; //строка в которой будет вестись поиск (например: "1 99")
Regex regex = new Regex(@"(?<=\ {4})\ "); // экземпляр регулярного выражения, заменяет каждый пятый пробел. Увеличение значения {4} увеличит количество пробелов.
string replacement = "."; //замена
int startat = 0; //порядковый номер найденного регулярного выражения, начинается с 0
int rcount = 1; //количество замен
if(!(startat >= 0 && rcount > 0)) //проверяем
throw new Exception("условия поиска заданы неверно");
var matches = regex.Matches(text); //сначала ищем
if(matches.Count < startat) //проверяем
throw new Exception("найденное количество совпадений меньше указанного индекса");
for (int i = 0; i < matches.Count; i++) {
text = regex.Replace(text, replacement, 1, matches[startat].Index);
}
project.Variables["res"].Value = text; // вернет "1 . . . . 99"
Не работает( даже ни одной точки не поставилХз есть ли на обычных регулярках решение. @doc потом подскажет если есть. Можно костылем на C# делать в цикле последовательную замену первого вхождения, за пример брался этот пост "Regex.Replace единичная замена вхождения":
C#:string text = project.Variables["txt"].Value; //строка в которой будет вестись поиск (например: "1 99") Regex regex = new Regex(@"(?<=\ {4})\ "); // экземпляр регулярного выражения, заменяет каждый пятый пробел. Увеличение значения {4} увеличит количество пробелов. string replacement = "."; //замена int startat = 0; //порядковый номер найденного регулярного выражения, начинается с 0 int rcount = 1; //количество замен if(!(startat >= 0 && rcount > 0)) //проверяем throw new Exception("условия поиска заданы неверно"); var matches = regex.Matches(text); //сначала ищем if(matches.Count < startat) //проверяем throw new Exception("найденное количество совпадений меньше указанного индекса"); for (int i = 0; i < matches.Count; i++) { text = regex.Replace(text, replacement, 1, matches[startat].Index); } project.Variables["res"].Value = text; // вернет "1 . . . . 99"
А оказалось… Всегда страшно столкнуться с болезнью, понять, что ты не контролируешь свое тело, что
оно заболело, а ты даже не заметила Я никогда не злоупотребляла вредными привычками, старалась
во многом себя ограничивать, чтоб потом не аукнулось Но от всего не убережешься — появились
полипы От этой заразы я избавилась исключительно народными средствами — боялась навредить
себе Мне таких страхов про полипы нарассказывали, а я их сумела вывести самостоятельно
Поспрашивала знакомых, где можно найти чистотел — использовать можно только свежее растение,
собранное в период цветения Так что аптечные и рыночные травы мне не подходили Я сама рвала эту
травку и дома измельчала Брала 30 г травы (но в зависимости от массы тела можно брать и больше —
до 50 г) и заливала холодной кипяченой водой Воды должно быть в 10 раз больше, чем травы
Чистотела 30 г, воды — 300 мл Настаивала ночь Пользовалась настоем так: сначала сделала
очистительную клизму, ждала 3 часа, а затем делала лечебную клизму с настоем чистотела в течение
часа Всего сделала 10 процедур и почувствовала себя гораздо лучше Такие курсы лечения необходимо
проводить весной, когда цветет чистотел, в течение трех лет
var text = project.Variables["tekst"].Value;
var pattern = " ";
var value = ". ";
var match = System.Text.RegularExpressions.Regex.Matches(text, pattern)[5]; //[0] - Это порядковый номер результата поиска регуляркой
text = text.Remove(match.Index, match.Length).Insert(match.Index, value);
return text;
string text = project.Variables["text"].Value;
int numReplace = Convert.ToInt32(project.Variables["numEmptyReplace"].Value);
var aText = text.Split(' ');
string newText = "";
int i = 1;
foreach(string str in aText){
if(i == numReplace){
newText += str+"^ ";
i = 0;
}else
newText += str+" ";
i++;
}
return newText.Replace("^", ".");;