2013-05-21 3 views
0

Мне нужен способ найти разницу между двумя строками в приложении Windows, используя VBScript. Одна из строк известна, но вторая во время кодирования полностью неизвестна. Я знаю, что есть такие функции, как StrCompare, InStr и т. Д., Но для этого вам требуется знать вторую строку также во время кодирования.Разница между двумя строками в VBScript

Объяснение:

Существует текстовое поле на экране и есть несколько кнопок, в том же экране. Когда и когда нажаты кнопки, текст в текстовом поле изменяется в зависимости от нажатия кнопки. Есть ли способ найти изменения, внесенные в текст после нажатия кнопки? В основном мне нужно, чтобы текст был введен из-за нажатия кнопки. Есть ли простой способ сделать это или требует сложного кодирования?

Спасибо заранее.

+0

Определить «разницу». Вам нужно найти первый несоответствующий символ, [сходство строк] (http://en.wikipedia.org/wiki/String_similarity) (например, [расстояние Левенштейна] (http://en.wikipedia.org/wiki/Levenshtein_distance)) или что-то еще? – Helen

+0

Предположим, что первоначально текстовое поле отображалось «Apple». Как только пользователь нажимает кнопку, текст меняется на «Apple, Orange». Теперь мне нужно найти текст «Оранжевый». – Rajesh

+1

Нет простого решения для поиска произвольных различий между двумя строками. Будет ли добавлен новый текст? Или он будет вставлен в произвольную позицию в существующей строке? –

ответ

0

Для доступа (чтения/записи) содержимого ввода текста HTML вам необходимо получить элемент HTML (document.all.<Name/Id> or document.getElementById(<Name/Id>) и его .value; как в этой демонстрации:

<html> 
<head> 
    <Title>readtext</Title> 
    <hta:application id="readtext" scroll = "no"> 
    <script type="text/vbscript"> 
    Function Change() 
    document.all.txtDemo.value = "Changed Value" 
    End Function 

    Function Check() 
    Dim txtDemo : Set txtDemo = document.getElementById("txtDemo") 
    Dim sDemo : sDemo  = txtDemo.value 
    Select Case LCase(Trim(sDemo)) 
     Case "initial value" 
     MsgBox "still: " & sDemo 
     Case "changed value" 
     MsgBox "now: " & sDemo 
     Case Else 
     MsgBox "surpise: " & sDemo 
    End Select 
    End Function 
    </script> 
</head> 
<body> 
    <input type="text" id="txtDemo" value="Initial Value" /> 
    <hr /> 
    <input type="button" value="Change" onclick="Change" /> 
    <input type="button" value="Check" onclick="Check" /> 
</body> 
</html> 
+0

Благодарим вас за ответ, но я работаю над приложением Windows, а не с веб-страницей. Кроме того, мне нужно найти только прилагаемый текст. – Rajesh

1

Это зависит от вашего приложения и формата новой строки.


Если вам нужно найти текст прилагаемой к исходной строке, вы могли бы принять новый текст и просто заменить первое вхождение исходной строки с пустой строкой:

Dim strOld, strNew, strDiff 

strOld = "Apple" 
strNew = "Apple, Orange" 

strDiff = Replace(strNew, strOld, "", 1, 1) 
WScript.Echo strDiff 

Sample выход:

, Orange


Или, если вам нужно, чтобы получить прилагаемую текст без предыдущей запятой, вы могли бы использовать что-то вроде этого:

strDiff = Replace(strNew, strOld + ", ", "", 1, 1) 
+0

Большое спасибо. Это именно то, что я искал. – Rajesh

Смежные вопросы