【问题标题】:Difference between two strings in VBScriptVBScript中两个字符串之间的区别
【发布时间】:2013-05-21 09:34:49
【问题描述】:

我需要一种方法来使用VBScript 在 Windows 应用程序中找出两个字符串之间的差异。其中一个字符串是已知的,但第二个字符串在编码期间完全未知。我知道有 StrCompareInStr 等函数,但这些函数要求您在编码期间也知道第二个字符串。

解释:

屏幕中有一个文本框,同一个屏幕中有几个按钮。当单击按钮时,文本框中的文本会根据单击的按钮而变化。有没有办法在单击按钮后找到对文本所做的更改?基本上我需要通过单击按钮来获取输入的文本。有没有一种简单的方法可以做到这一点,还是需要复杂的编码?

提前致谢。

【问题讨论】:

  • 定义“差异”。你需要找到第一个不匹配的字符string similarity(例如Levenshtein distance)还是别的什么?
  • 假设最初文本框显示“Apple”。用户单击按钮后,文本将变为“Apple,Orange”。现在我需要一种方法来单独找到文本“Orange”。
  • 没有简单的解决方案可以找到两个字符串之间的任意差异。是否总是附加新文本?还是会插入现有字符串的任意位置?

标签: string vbscript difference


【解决方案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)

【讨论】:

  • 非常感谢。这正是我想要的。
【解决方案2】:

要访问(读/写)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>

【讨论】:

  • 感谢您的回复,但我正在开发 Windows 应用程序而不是网页。此外,我需要单独找到附加的文本。
猜你喜欢
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2011-08-22
相关资源
最近更新 更多