0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 3
1

Замена символа в строке

16.09.2013, 11:44. Показов 3623. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. Помогите пожалуйста с кодом )
Есть файл в txt-формате.
В нем несколько сотен строк.
В каждой строке число, перевод на другую строку записан через enter.
Нужно заменить n-символ по порядку слева на другой.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2013, 11:44
Ответы с готовыми решениями:

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по порядку вхождения...

Операции в строке: поиск, замена, удаление символа в строке
Доброго здравия! В ассемблере совсем новичок, поэтому прошу помощи. Программа должна получать...

Замена символа в строке
В строке “ 4 * Х * 2 + 3 * Х + У * 7 – 9 = 0 ” все вхождения символа “Х” заменить на заданный...

Замена символа в строке
в заданной строке заменить каждый символ строки следующим по коду символом

5
Модератор
Эксперт функциональных языков программированияЭксперт Python
36367 / 19816 / 4152
Регистрация: 12.02.2012
Сообщений: 32,942
Записей в блоге: 13
16.09.2013, 12:02 2
Цитата Сообщение от sleo Посмотреть сообщение
Нужно заменить n-символ по порядку слева на другой
:

1) в каждой строке?
2) на какой символ?
3) результат - в файл?



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Task(fname as string, n as long, newSym as string)
   ff%=FreeFile
   open fname for binary Access Read Write As #ff%
   lf&=LOF(ff%)
   Buf$=Space$(lf&)
   get #ff%,, Buf$
   p&=1
   Do
      k&=Instr(p&,Buf$,Chr$(13))
      if k&=0 then Exit Do
      mid$(Buf$,p&+n+1, 1)=newSym
      p&=p&+2
   Loop
   seek #ff%,1
   put #ff%,,Buf$
   close #ff%
End Sub
Набил без проверки... Пустых строк (и строк, короче n быть не должно)
0
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 3
16.09.2013, 16:25  [ТС] 3
1. Да
2. Символ "*"
3. Да
Пустых строк и строк, короче n - нет.
Буду тестировать, спасибо! )

Добавлено через 17 минут
А можете подробнее написать что к чему?
Я логику цикла понимаю, язык не знаю (

Добавлено через 2 часа 54 минуты
Помогите разобраться

Добавлено через 1 час 7 минут
вот пример того, что было и что нужно.
Было:
Код
410348576140850
043875608314765
130485761340856
Стало:
Код
410*48576140850
043*75608314765
130*85761340856
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36367 / 19816 / 4152
Регистрация: 12.02.2012
Сообщений: 32,942
Записей в блоге: 13
16.09.2013, 16:29 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Task(fname as string, n as long, newSym as string)
   ff%=FreeFile  ' номер файла
   open fname for binary Access Read Write As #ff% ' открываем в двоичном режиме для чтения и записи
   lf&=LOF(ff%) ' получаем длину файла
   Buf$=Space$(lf&) ' выделяем буфер
   get #ff%,, Buf$ ' читаем файл целиком
   p&=1 ' указатель символа
   Do
      k&=Instr(p&,Buf$,Chr$(13)) ' первое вхождение конца строки (с p-й позиции)
      if k&=0 then Exit Do ' если строка последняя - выход
      mid$(Buf$,p&+n+1, 1)=newSym ' меняем символ в нужном месте
      p&=p&+2 ' корректируем позицию
   Loop ' конец цикла
   seek #ff%,1 ' позиционируем файловый указатель на начало файла
   put #ff%,,Buf$ ' выводим буфер
   close #ff% ' закрываем файл
End Sub
0
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 3
16.09.2013, 16:55  [ТС] 5
Видимо я все-таки алгоритм не понимаю указанный (

Здесь по факту получается замена каждого 2-го символа.
И перехода строки нет.

Я думал, что должно быть так.

Берем файл.
n =1 (номер строки).

Цикл

проверяемся на конец файла
Берем строку n.
В ней меняем символ по порядку слева nn (задаем постоянным) на символ newsym (задаем постоянным).
n=n+1 (Переходим на новую строку)

Возвращаемся в начало цикла

Закрываем файл.

Вот это можно на vba написать? )
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36367 / 19816 / 4152
Регистрация: 12.02.2012
Сообщений: 32,942
Записей в блоге: 13
16.09.2013, 19:04 6
Цитата Сообщение от sleo Посмотреть сообщение
Здесь по факту получается замена каждого 2-го символа.
- не второго, а того, который задается параметром n процедуры Task.

А то, что ты написал не меняет содержимое файла.

Добавлено через 1 час 25 минут
Цитата Сообщение от sleo Посмотреть сообщение
И перехода строки нет.
- есть.

Добавлено через 15 минут
Прошу прощения, мой код сдержал неточности...

Вот так правильно:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Task(fname As String, n As Long, newSym As String)
   ff% = FreeFile ' номер файла
   Open fname For Binary Access Read Write As #ff% ' открываем в двоичном режиме для чтения и записи
   lf& = LOF(ff%) ' получаем длину файла
   Buf$ = Space$(lf&) ' выделяем буфер
   Get #ff%, , Buf$ ' читаем файл целиком
   p& = 1 ' указатель символа
   Do
      k& = InStr(p&, Buf$, Chr$(13)) ' первое вхождение конца строки (с p-й позиции)
      If k& = 0 Then Exit Do ' если строка последняя - выход
      Mid$(Buf$, p& + n - 1, 1) = newSym ' меняем символ в нужном месте
      p& = k& + 2 ' корректируем позицию
   Loop ' конец цикла
   Seek #ff%, 1 ' позиционируем файловый указатель на начало файла
   Put #ff%, , Buf$ ' выводим буфер
   Close #ff% ' закрываем файл
End Sub
 
 
Sub Test()
     HomeDir$ = ThisWorkbook.Path
     Task HomeDir$ + "\f1.txt", 3, "*"
     Task HomeDir$ + "\f2.txt", 5, "*"
 End Sub
Исходные файлы f1.txt и f2.txt:

Код
410348576140850
043875608314765
130485761340856
Файл f1.txt (третий символ -> "*")

Код
41*348576140850
04*875608314765
13*485761340856
Файл f2.txt (пятый символ -> "*")

Код
4103*8576140850
0438*5608314765
1304*5761340856
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2013, 19:04
Помогаю со студенческими работами здесь

Замена символа в строке
Если кто-то сможет помогите пожалуйста. Дана следующая задачка: Написать программу, которая...

Замена символа в строке
Подскажите пожалуйста почему код не работает корректно? #include <iostream> #include <string>...

Замена символа в строке
Здравствуйте! Есть небольшая проблема, в поле базы храниться строка: (какой-то...

Замена символа в строке
$a = "TESTSTR"; for($i = 0; $i <= strlen($a); $i++){ if ($a == " "){ $a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru