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

Replace ("1011112", "1", "2", 5, 1) выдаёт 212, а надо 1011212
...
Рейтинг: 0 / 0
19.12.2016, 22:14
    #39370612
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Код: vbnet
1.
new_str = left(old_str, position - 1) & new_char & mid(old_str, position+1)
...
Рейтинг: 0 / 0
19.12.2016, 22:18
    #39370614
Морда
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Mid или всё таки Right
...
Рейтинг: 0 / 0
19.12.2016, 22:28
    #39370617
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Вот самому не стыдно такие вопросы задавать?
...
Рейтинг: 0 / 0
20.12.2016, 04:14
    #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
20.12.2016, 04:17
    #39370674
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
AkinaВот самому не стыдно такие вопросы задавать?не все помнят/знают, что Mid работает, как в одну сторону, так и в другую... Только знаки меняет 1 к 1...
...
Рейтинг: 0 / 0
20.12.2016, 07:45
    #39370683
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Панург Mid работает, как в одну сторону, так и в другую??? в смысле, что есть оператор, а есть функция? но тут-то совсем иной случай - просто у функции третий параметр (длина) необязательный, и при его отсутствии режется кусок до конца строки.
...
Рейтинг: 0 / 0
20.12.2016, 08:01
    #39370689
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Akinaв смысле, что есть оператор, а есть функция?уже не стал усложнять - оператор/функция... :)

Akina???
Akinaно тут-то совсем иной случайТак-то да. Это я немного не так отинтерпретировал вопрос, каюсь.
...
Рейтинг: 0 / 0
21.12.2016, 10:08
    #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
21.12.2016, 12:21
    #39371784
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
JossЕсли хочешьнеа, нихочу...
...
Рейтинг: 0 / 0
22.12.2016, 09:45
    #39372570
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
ПанургJossЕсли хочешьнеа, нихочу... Все претензии к мелкомягким. Скорее всего они когда-то лопухнулись, а потом не стали исправлять ошибку, а объявили её особенностью.

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

Падоброму...
...
Рейтинг: 0 / 0
26.12.2016, 10:46
    #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
26.12.2016, 19:30
    #39375563
Морда
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Спасибо. Завязывайте. Падоброму...
...
Рейтинг: 0 / 0
27.12.2016, 20:29
    #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
28.12.2016, 08:41
    #39376532
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Была когда-то у меня задача.
На входе текстовый файл, на выходе то же надо получить текстовый файл.
Строки переменной длины. В строке разные данные разделённые знаком ";" Надо было найти определённое значение в определённой позиции и заменить на другое. Например проверить значение между 5 и 6 разделителями и если оно соответствует заданному, то заменить.
Справился с заданием при помощи функций Left, Right, Mid и InStr
...
Рейтинг: 0 / 0
28.12.2016, 10:30
    #39376612
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Joss.... Например проверить значение между 5 и 6 разделителями и если оно соответствует заданному, то заменить.
Справился с заданием при помощи функций Left, Right, Mid и InStrА почему не Split?
...
Рейтинг: 0 / 0
28.12.2016, 15:43
    #39376996
Joss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
Да, со Split было бы проще, но Split появился вроде бы только в VB6
...
Рейтинг: 0 / 0
28.12.2016, 22:02
    #39377266
Lieutenant Pigeon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена символа в строке
JossБыла когда-то у меня задача ...
Да, со Split было бы проще, но Split появился вроде бы только в VB6
В VB5 не быдо, этог так, но...
... кагбэ принято сразу оговариваться, есль речь идет о "при царе Горохе"...
.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Замена символа в строке / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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