2013-05-21 51 views
0

我需要一種方法來使用VBScript找到Windows應用程序中兩個字符串之間的區別。其中一個字符串是已知的,但第二個在編碼過程中完全未知。我知道有功能,如StrCompareInStr等,但這些要求您在編碼過程中也知道第二個字符串。VBScript中兩個字符串之間的區別

說明:

有一個在屏幕上的文本框,並有在同一畫面中幾個按鈕。當點擊按鈕時,文本框中的文本根據點擊的按鈕而改變。有沒有一種方法可以在單擊按鈕後查找對文本所做的更改?基本上我需要獲取由於按鈕點擊而輸入的文本。有沒有簡單的方法來做到這一點,或者需要複雜的編碼?

在此先感謝。

+0

定義「差異化」。你需要找到第一個不匹配的字符:[字符串相似度](http://en.wikipedia.org/wiki/String_similarity)(例如[Levenshtein distance](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>)及其值。如本演示中所示:

<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 

樣品輸出:

,橙


或者,如果你需要得到不包括前面的逗號附加的文字,你可以使用這樣的事情:

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

非常感謝。那正是我所期待的。 – Rajesh

相關問題