powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и замена в в StringReader
9 сообщений из 9, страница 1 из 1
Поиск и замена в в StringReader
    #40071506
trok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть такая задача: читаю построчно из файла в переменную string. Строки такого вида
100: P и тут координаты. По координатам ищу номер, после чего номер "100:" надо заменить на другой номер. Сначала думал просто поиском и Replace в переменной, но столкнулся с таким моментом, что в переменной может быть и такое:
100: ....
1100: ....
2100: ...
через Replace заменит в каждой строке 100 на, например, 200, а надо только в той, что "100:". Вот и возник вопрос, как лучше решить эту задачу? Как вариант вызвать внутри StringReader еще один StringReader и читая построчно искать количество символов от начала строки до ":" и если оно равно длине строки на которую меняю, то делать замену.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
//Ищем номер позиции в строке
int len=str.IndexOf(":");
//Сравниваем номер позиции с количеством символов в строке на которую надо заменить
if(len==num.Lenght)
{
//Делаем замену в считанной ранее строке
str=str.Replace(str,num);
//Меняем строку в общей строковой переменной
data=data.Replace(data,str);
}


Но как-то это громоздко
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071516
fkfka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StringReader это ведь просто одна из имплементаций TextReader - ни на что, кроме как последовательное чтение текста он не рассчитан.

trok
Как вариант вызвать внутри StringReader еще один StringReader

Надо больше жести, а то слабовато Ты какую проблему вообще хочешь решить-то, можешь сказать?
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071525
trok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkfka,
Заменить конкретное число в конкретной строке. То есть в файле есть строки
100:
....
2100:
...
3100:
Я хотел бы заменить 100 на 200, то есть только строку в которой "100:". Но простым реплейсом он заменит 100 везде и в результате будет
200: (то что надо)
....
2200: (должно остаться 2100:)
....
3200: (должно остаться 3200:)
То есть найти и заменить только, то число которое задано конкретно.

авторНадо больше жести, а то слабовато

Так и я о том же
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071526
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trok
Но простым реплейсом он заменит 100 везде ..... заменить только, то число которое задано конкретно.
Что-то мешает воспользоваться Regex.Replace? или тут еще каким-то образом замешаны перекрестные ссылки между строками, я никак не могу понять задание.
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071530
trok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то мешает воспользоваться Regex.Replace?
Вот и вопрос в этом, как и через что это лучше сделать. Regex я не пользовался, поэтому не в курсе, что там и как.
я никак не могу понять задание.

Найти точное вхождение одно строки в другую. Оно только одно и его и надо найти и заменить
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071539
fkfka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trok,

Код: c#
1.
2.
3.
4.
5.
6.
7.
using var textReader = new StreamReader("MyFile.txt"); // предположим, что файл в UTF-8
string line;
while((line = textReader.ReadLine()) != null) // круче, конечно, сделать с Async, но тут и так сойдет
{
    line = Regex.Replace(line, "^100:", "200:"); // но, лучше создать Regex один раз заранее - будет быстрее
    Console.WriteLine(line); // ну, или выводи туда, куда надо    
}
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071540
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trok
Найти точное вхождение одно строки в другую
Точное как раз-таки обеспечит Replace, тебе надо как раз не точное, а с дополнительными условиями, с которыми и надо определиться и четко сформулировать. К примеру в заменяемой строке предшествующий или последующий символ не должен быть цифрой. Или замена строго между началом строки и двоеточием и т.п.

trok
Найти точное вхождение одно строки в другую. Оно только одно и его и надо найти и заменить
А зачем тогда все эти рассказы про какие-то множества строк, какие-то файлы, стрингридеры, какие-то координаты и т.п.

trok
Regex я не пользовался
Самое время изучить. Это азбука разработчика.
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071543
trok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkfka,
Спасибо. Буду копать
...
Рейтинг: 0 / 0
Поиск и замена в в StringReader
    #40071561
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаешь построчно файл, если последние 3 символа перед ":" являются 100, то заменяешь, в противном случае-нет.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и замена в в StringReader
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]