powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Замена символа в строке
19 сообщений из 19, страница 1 из 1
Замена символа в строке
    #39370610
Морда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в строке заменить отдельный символ на другой, зная его положение в исходной строке?
Например в строке 1011112 заменить пятый по порядку символ на 2.

Replace ("1011112", "1", "2", 5, 1) выдаёт 212, а надо 1011212
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370612
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
new_str = left(old_str, position - 1) & new_char & mid(old_str, position+1)
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370614
Морда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mid или всё таки Right
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370617
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот самому не стыдно такие вопросы задавать?
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370673
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Морда,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Test_Mid()
'Replace ("1011112", "1", "2", 5, 1) выдаёт 212, а надо 1011212
Dim strText As String
strText = "1011112"
Mid(strText, 5, 1) = "2"
Debug.Print strText
End Sub

1011212
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370674
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaВот самому не стыдно такие вопросы задавать?не все помнят/знают, что Mid работает, как в одну сторону, так и в другую... Только знаки меняет 1 к 1...
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370683
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург Mid работает, как в одну сторону, так и в другую??? в смысле, что есть оператор, а есть функция? но тут-то совсем иной случай - просто у функции третий параметр (длина) необязательный, и при его отсутствии режется кусок до конца строки.
...
Рейтинг: 0 / 0
Замена символа в строке
    #39370689
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinaв смысле, что есть оператор, а есть функция?уже не стал усложнять - оператор/функция... :)

Akina???
Akinaно тут-то совсем иной случайТак-то да. Это я немного не так отинтерпретировал вопрос, каюсь.
...
Рейтинг: 0 / 0
Замена символа в строке
    #39371623
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургМорда,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Test_Mid()
'Replace ("1011112", "1", "2", 5, 1) выдаёт 212, а надо 1011212
Dim strText As String
strText = "1011112"
Mid(strText, 5, 1) = "2"
Debug.Print strText
End Sub

1011212


На сайте Микрософт к функции Replace висит заметка

Значение, возвращаемое функцией Replace является строкой, которая начинается с позиции, указанной параметром Start, и завершается в конце строки Expression, с заменой подстрок Find значениями Replace.

Т.е. Если хочешь получить нормальную замену, надо к результату добавить начало исходной строки до позиции Start.
...
Рейтинг: 0 / 0
Замена символа в строке
    #39371784
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossЕсли хочешьнеа, нихочу...
...
Рейтинг: 0 / 0
Замена символа в строке
    #39372570
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургJossЕсли хочешьнеа, нихочу... Все претензии к мелкомягким. Скорее всего они когда-то лопухнулись, а потом не стали исправлять ошибку, а объявили её особенностью.

Как говорится: баг переживший три релиза считается фичей.
...
Рейтинг: 0 / 0
Замена символа в строке
    #39372611
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossВсе претензии к мелкомягким.Спасибо конечно. Только зачем мне притензии кому-то предъявлять? Я не задавал вопроса. Как поменять нужный мне символ я знаю (ответил - с помощью оператора Mid ). Мне ничего не нужно. И советов тоже.

Падоброму...
...
Рейтинг: 0 / 0
Замена символа в строке
    #39375085
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург... Мне ничего не нужно. И советов тоже.
Падоброму... Ну вдруг кому-то понадобится
Код: vbnet
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.
'---------------------------------------------------------------------------------------
' Procedure : fnReplace
' Author    : Sonnih
' Date      : 26.12.2016
' Purpose   : Ïîäìåíà ñòàíäàðòíîé ôóíêöèè Replace
'---------------------------------------------------------------------------------------
'
Public Function fnReplace(ByVal Expression, ByVal Find, ByVal Replacement, _
        Optional ByVal Start As Integer = 1, Optional ByVal Count As Integer = -1, _
        Optional ByVal Compare As VbCompareMethod = vbBinaryCompare) As String

   On Error GoTo fnReplace_Error

    If IsNull(Expression) Then
        fnReplace = ""
        Exit Function
    End If

    If IsNull(Find) Then
        fnReplace = Expression
        Exit Function
    End If
    
    If IsNull(Replacement) Then
        fnReplace = Expression
        Exit Function
    End If

    If Len(Expression) < Start Then
        fnReplace = Expression
        Exit Function
    End If
   
    If Count < -1 Then
        fnReplace = Expression
        Exit Function
    End If
   
    If Start <= 1 Then
        fnReplace = Replace(Expression, Find, Replacement, Start, Count, CompareMethod)
        Exit Function
    End If
    
    If Start > 1 Then
        fnReplace = Left(Expression, Start - 1) & Replace(Expression, Find, Replacement, Start, Count, CompareMethod)
        Exit Function
    End If
      
   On Error GoTo 0
   Exit Function

fnReplace_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fnReplace"

End Function
...
Рейтинг: 0 / 0
Замена символа в строке
    #39375563
Морда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Завязывайте. Падоброму...
...
Рейтинг: 0 / 0
Замена символа в строке
    #39376352
Фотография Lieutenant Pigeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МордаКак в строке заменить отдельный символ на другой, зная его положение в исходной строке?
Например в строке 1011112 заменить пятый по порядку символ на 2.

Replace ("1011112", "1", "2", 5, 1) выдаёт 212, а надо 1011212
Сугубо по ТЗ и в нативном юникоде:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Sub sb_Test()
Dim tStr() As Byte
    tStr() = "1011112"
    Debug.Print tStr()
    tStr((5 - 1) * 2) = 50
    Debug.Print tStr()
End Sub



Расширение функционала через F1: StrConv

Это вместо того, чтобы строки ворочать...
.
...
Рейтинг: 0 / 0
Замена символа в строке
    #39376532
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Была когда-то у меня задача.
На входе текстовый файл, на выходе то же надо получить текстовый файл.
Строки переменной длины. В строке разные данные разделённые знаком ";" Надо было найти определённое значение в определённой позиции и заменить на другое. Например проверить значение между 5 и 6 разделителями и если оно соответствует заданному, то заменить.
Справился с заданием при помощи функций Left, Right, Mid и InStr
...
Рейтинг: 0 / 0
Замена символа в строке
    #39376612
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Joss.... Например проверить значение между 5 и 6 разделителями и если оно соответствует заданному, то заменить.
Справился с заданием при помощи функций Left, Right, Mid и InStrА почему не Split?
...
Рейтинг: 0 / 0
Замена символа в строке
    #39376996
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, со Split было бы проще, но Split появился вроде бы только в VB6
...
Рейтинг: 0 / 0
Замена символа в строке
    #39377266
Фотография Lieutenant Pigeon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossБыла когда-то у меня задача ...
Да, со Split было бы проще, но Split появился вроде бы только в VB6
В VB5 не быдо, этог так, но...
... кагбэ принято сразу оговариваться, есль речь идет о "при царе Горохе"...
.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Замена символа в строке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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