【问题标题】:how to search for numbers and reverse them如何搜索数字并反转它们
【发布时间】:2013-07-09 20:31:48
【问题描述】:

对不起标题,但愚蠢的东西没有接受任何东西。 我正在尝试这样做

Dim myString, myResult
myString = "Hello World! 1234 Hello World! 4321 Hello World! 6789"
Set myRegex = New RegExp
myRegex.Global = true
myRegex.IgnoreCase = true
myRegex.Pattern = "([0-9]+)"
myResult = myRegex.Replace(myString, StrReverse("$1"))

我希望所有数字反转 我希望字符串看起来像这样 “你好世界!4321你好世界!1234你好世界!9876” 但我得到的只是“1美元”

谢谢:-)

【问题讨论】:

  • 当你的帖子没有通过过滤器时,你应该考虑它是正确的可能性,并改进你的帖子,而不是随便绕过它。
  • “这篇文章不符合我们的质量标准”仍然是正确的。 :-) 请edit您的问题标题为实际适用于您的问题的内容,然后编辑文本以详细说明您要问的内容以及您发布的代码中的问题。谢谢。
  • 我编辑了标题,我不明白如何使我的问题成为我的详细信息
  • 您将$1 传递给StrReverse,这将返回1$,这就是您要返回的内容。你还期望它做什么? ($1 是您使用它的方式的字符串文字,而不是您似乎认为的正则表达式中的匹配组;如果您更清楚地解释您要做什么,您会得到帮助更快。到目前为止,您所说的是:“我正在尝试使用什么都不做的代码,并且我正在使用该代码获得我所要求的结果。”)
  • 如果我不 strRevers 我得到匹配的结果,但我想反转它

标签: vbscript


【解决方案1】:

您可以使用replacement function

Function Reverse(m, pos, src)
  Reverse = StrReverse(m)
End Function

Set re = New RegExp
re.Pattern = "\d+"
re.Global = True

s = "Hello World! 1234 Hello World! 4321 Hello World! 6789"

WScript.Echo re.Replace(s, GetRef("Reverse"))

输出:

Hello World! 4321 Hello World! 1234 Hello World! 9876

仅仅调用re.Replace(s, StrReverse("$1")) 是行不通的,因为在这个语句中,StrReverse 在调用re.Replace() 之前反转了字符串“$1”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-04
    • 2013-04-27
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2016-07-20
    • 2020-10-12
    • 2013-04-25
    相关资源
    最近更新 更多