Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как выципить изменившуюся часть слова. Добавлено: 29.09.09 01:06  

Автор вопроса:  J. Smith | Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой. | ICQ: ненавижу 
В строковых переменных имею слова, Оригинал и Измененное, вопрос как в две переменные получить Разницу т.е. изменившиеся части слов?
В измененном слове от оригинала как минимум остается первая буква, но обычно меняется только окончание.
Пример:
Ориг. Палковника
Измн. Полковника
Раз1. Палковника
Раз2. Полковника
Ориг. Исава
Измн. Исаева
Раз1. ава
Раз2. аева
Ориг. Петровмич
Измн. Петрович
Раз1. вмич
Раз2. вич

Ктоньть имел такой опыт?

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #1 Добавлено: 29.09.09 04:05
Можно элементарно булевым флажком и одним циклом по оригиналу пока не найдешь первый несовпадающий символ, раз1=райтс(оригинал, первый несовпавший) и со вторым также райтс, тока не оригинал, а измененное.
В общих чертах объяснил.

Ответить

Номер ответа: 2
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #2 Добавлено: 29.09.09 17:28
по типу надо сделать 2 массива типа String с размерностью слова( или 1 двумерный массив), забив с помощю цикла каждый элемент массива 1-й буквой, после чего в цикле, сравнить эти массивы, если элементы равны, то ничего не делаеш, если нет выписываеш букву в строчную переменную.

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #3 Добавлено: 29.09.09 19:47
Незнаю нафик незнаю :)
  1.     Dim Assist As Boolean
  2.     Dim tmpInt As Integer
  3.     Dim PreviousVal As String
  4.     Dim NewestValue As String
  5.  
  6.     PreviousVal = "Пирцхалаева"
  7.     NewestValue = "Пирцхалава"
  8.     For tmpInt = 1 To Len(PreviousVal)
  9.         If Mid$(PreviousVal, tmpInt, 1) <> Mid$(NewestValue, tmpInt, 1) Then
  10.             tmpInt = tmpInt - 2
  11.             Assist = True
  12.             Exit For
  13.         End If
  14.     Next
  15.     If Assist = False And Len(PreviousVal) < Len(NewestValue) Then Assist = True: tmpInt = 0
  16.     If Assist Then
  17.         PreviousVal = Right$(PreviousVal, Len(PreviousVal) - tmpInt)
  18.         NewestValue = Right$(NewestValue, Len(NewestValue) - tmpInt)
  19.         MsgBox "Заменить все [" & PreviousVal & "] на [" & NewestValue & "]", vbQuestion Or vbYesNo, "Ассистент"
  20.     End If

Ассистент
? Заменить все [аева] на [ава]

  1.     Dim Assist As Boolean
  2.     Dim tmpInt As Integer
  3.     Dim PreviousVal As String
  4.     Dim NewestValue As String
  5.  
  6.     PreviousVal = "Пирцхалав"
  7.     NewestValue = "Пирцхалава"
  8.     For tmpInt = 1 To Len(PreviousVal)
  9.         If Mid$(PreviousVal, tmpInt, 1) <> Mid$(NewestValue, tmpInt, 1) Then
  10.             tmpInt = tmpInt - 2
  11.             Assist = True
  12.             Exit For
  13.         End If
  14.     Next
  15.     If Assist = False And Len(PreviousVal) < Len(NewestValue) Then Assist = True: tmpInt = 0
  16.     If Assist Then
  17.         PreviousVal = Right$(PreviousVal, Len(PreviousVal) - tmpInt)
  18.         NewestValue = Right$(NewestValue, Len(NewestValue) - tmpInt)
  19.         MsgBox "Заменить все [" & PreviousVal & "] на [" & NewestValue & "]", vbQuestion Or vbYesNo, "Ассистент"
  20.     End If

Ассистент
? Заменить все [Пирцхалав] на [Пирцхалава]

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам