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

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

02.06.2009, 22:32. Показов 8087. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем такое задание:
дана страка символов, допустим "asdfjklrtldfl"
дан символ "l" допустим. И нужно заменить этот символ в строке на пробел и вывести результирующую строку:"asdfjk rt df "
Помогите пожалуйста, заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2009, 22:32
Ответы с готовыми решениями:

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

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

Поиск определенного слова в строке и замена определенного символа после этого слова
Представим что у нас есть следующая строка: "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася...

Замена символа в строке
Есть простая задача: Дана строка. Заменить все символы 'a' на 'A' Решена задача была так: char...

2
55 / 55 / 5
Регистрация: 09.03.2009
Сообщений: 177
03.06.2009, 09:15 2
Нашел в книге Зубкова С.В. "Ассемблер для DOS, Windows и Unix" пример программы заменяющий один символ другим. В программе заменяется русская буква 'Н' латинской 'H' во всех текстовых файлах находящихся в папке, где запускается программа.
Вот программа:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
; fidoh.asm
; заменяет русские "Н" на латинские "Н" во всех файлах с расширением .ТХТ
; в текущем каталоге
        .model     tiny
        .code
        org        100h                ; СОМ-файл
start:
        mov        ah,4Eh              ; поиск первого файла
        xor        cx,cx               ; не системный, не каталог и т.д.
        mov        dx,offset filespec  ; маска для поиска в DS:DX
file_open:
        int        21h
        jc         no_more_files       ; если CF = 1 - файлы кончились
 
        mov        ax,3D02h            ; открыть файл для чтения и записи
        mov        dx,80h+1Eh          ; смещение DTA + смещение имени файла
        int        21h                 ; от начала DTA
        jc         find_next           ; если файл не открылся - перейти
                                       ; к следующему
        mov        bx,ax               ; идентификатор файла в ВХ
        mov        cx,1                ; считывать один байт
        mov        dx,offset buffer    ; начало буфера - в DX
read_next:
        mov        ah,3Fh              ; чтение файла
        int        21h
        jc         find_next           ; если ошибка - перейти к следующему
        dec        ах                  ; если АХ = 0 - файл кончился -
        js         find_next           ; перейти к следующему
        cmp        byte ptr buffer,8Dh ; если не считана русская "Н",
        jne        read_next           ; считать следующий байт,
        mov        byte ptr buffer,48h ; иначе - записать в буфер
                                       ; латинскую букву "Н"
        mov        ax,4201h            ; переместить указатель файла от текущей
        dec        cx                  ; позиции назад на 1
        dec        cx                  ; CX = FFFFh
        mov        dx,cx               ; DX = FFFFh
        int        21h
        mov        ah,40h              ; записать в файл
        inc        cx
        inc        cx                  ; один байт (СХ = 1)
        mov        dx,offset buffer    ; из буфера в DS:DX
        int        21h
        jmp        short read_next     ; считать следующий байт
 
find_next:
        mov        ah,3Eh              ; закрыть предыдущий файл
        int        21h
        mov        ah,4Fh              ; найти следующий файл
        mov        dx,80h              ; смещение DTA от начала PSP
        jmp        short file_open
 
no_more_files:                         ; если файлы кончились,
        ret                            ; выйти из программы
 
filespec      db   "*.txt",0           ; маска для поиска
buffer label  byte                     ; буфер для чтения/записи -
        end        start               ; за концом программы
Меняешь его символы 'н' и 'h' на свои "l" и пробел соответственно, и будет тебе счастье.
0
andro[coder]
02.04.2010, 11:47 3
Привет, если нужно могу кинуть код на ассемблере под Win32, правда изначально я писал вирус, но старый код остался, вот держи, сори что коментов нет, лень писать....думаю разберёшься, тут сложного ничего нет =) прога заменяет латинские "s" на "$"....можешь изменить как тебе нужно
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
.386
.model flat, stdcall
option casemap : none
includelib imp32i.lib
include    def32.inc
 
extrn   MessageBoxA : proc
extrn   ExitProcess : proc
extrn   SetCurrentDirectoryA : proc
extrn   FindFirstFileA : proc
extrn   CloseHandle : proc
extrn   GlobalAlloc : proc
extrn   GlobalLock : proc
extrn   GlobalUnlock : proc
extrn   GlobalFree : proc
extrn   CreateFileA : proc
extrn   ReadFile : proc
extrn   WriteFile : proc
extrn   GetFileSize : proc
extrn   GetModuleHandleA : proc
extrn   FindNextFileA : proc
 
MAX_PATH equ 260
FILE_ATTRIBUTE_NORMAL equ 80h
 
FIND_DATA STRUC
    dwFileAttributes dd ?
    ftCreationTime dq ?
    ftLastAccessTime dq ?
    ftLastWriteTime dq ?
    nFileSizeHigh dd ?
    nFileSizeLow dd ?
    Reserved0 dd ?
    Reserved1 dd ?
    cFileName db MAX_PATH dup(?)
    cAlternateFileName db 14 dup(?)
FIND_DATA ENDS
.data
MB_OK   equ 16
maska   db '*.txt',0
hfind dword ?
FindData FIND_DATA <?>
DIR db 'Тут пишешь нужную директорию',0
TR  db 'Вирус!',0
error3  db 'Операция успешно выполнена!',0
error         db 'Ошибка',0
error1        db 'Файл не найден',0
error2        db 'Операция не может быть выполнена!',0
fileName      dd 0
programHandle dd 0
fileHandle    dd 0
memoryHandle  dd 0
memoryOffset  dd 0
SizeRW        dd 0
.code
    jmp main
program_error proc
    push MB_OK
    push offset TR
    push eax
    push ebx
    call MessageBoxA
    push memoryHandle
    call GlobalUnlock
    push memoryHandle
    call GlobalFree
    push ebx
    call ExitProcess
    ret
program_error endp
CheckSymbol proc
    push edi
    mov al,'s'
    mov ecx,edi
    inc ecx
    mov edi,memoryOffset
loop_check:
    repne scasb
    test ecx,ecx
    jz end_check
    mov byte ptr [edi-1],'$'
    jmp loop_check
end_check:
    pop edi
    ret
CheckSymbol endp
main:
    xor ebx,ebx
    push ebx
    call GetModuleHandleA
    mov programHandle,eax
    push offset DIR
    call SetCurrentDirectoryA
    cmp eax,0
    je none1
    jnc file_ok
none:
    mov eax,offset error1
    call program_error
file_ok:
    push offset FindData
    push offset maska
    call FindFirstFileA
    mov hfind,eax
    cmp eax,-1
    je none
    cmp byte ptr [FindData.cFileName],"."
    je next
next:
    push offset FindData
    push hfind
    call FindNextFileA
    cmp eax,0
    je none
    cmp byte ptr [FindData.cFileName],"."
    je next
    jnc OK
OK:
    lea esi,[FindData.cFileName]
    mov fileName,esi
    push ebx
    push FILE_ATTRIBUTE_ARCHIVE
    push OPEN_EXISTING
    push ebx
    push FILE_SHARE_READ
    push GENERIC_READ
    push esi
    call CreateFileA
    add esp,12
    test eax,eax
    jnz file_opened_OK
none1:
    mov eax,offset error2
    call program_error 
file_opened_OK:
    mov fileHandle,eax
    push ebx
    push eax
    call GetFileSize
    mov edi,eax
    push eax
    push GMEM_MOVEABLE or GMEM_ZEROINIT
    call GlobalAlloc
    mov memoryHandle,eax
    push eax
    call GlobalLock
    mov memoryOffset,eax
    push ebx
    push offset SizeRW
    push edi
    push eax
    push fileHandle
    call ReadFile
    push fileHandle
    call CloseHandle
    call CheckSymbol
    push ebx
    push FILE_ATTRIBUTE_ARCHIVE
    push TRUNCATE_EXISTING
    push ebx
    push FILE_SHARE_WRITE
    push GENERIC_WRITE
    push fileName
    call CreateFileA
    push ebx
    push offset SizeRW
    push edi
    push memoryOffset
    push fileHandle
    call WriteFile
    push fileHandle
    call CloseHandle 
    jnc next        
end main
02.04.2010, 11:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2010, 11:47
Помогаю со студенческими работами здесь

Замена символа в строке
Замена символа (к примеру &quot;ж&quot;) в строке выглядит следующим образом: arr = a.replace(/\ж/g, &quot;*&quot;)...

Замена символа в строке
дана строка вида:10*2+X^2; мне нужно по ходу действий заменить X на число из формы, которое может...

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

Замена символа в строке
Всем добрый день. Помогите пожалуйста с кодом ) Есть файл в txt-формате. В нем несколько сотен...


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

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

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