我制作了一个用户可以输入数字,一个或多个字符和一个单词的ASP。然后他可以按下按钮,它会用给定的数字替换单词中给定的字符。 我的问题是,当用户输入更多内容时,如何让脚本替换单个字符? 即进入" ab"这个词是" abby",而且数字是" 1",我现在的节目制作" 1by",但我想要#34; 111y&# 34;,我怎么意识到这一点?
<html>
<head>
<meta charset = "utf-8">
<title>Replace
</title>
</head>
<body>
<%
response.flush
l_zahl = request.querystring("f_zahl")
l_wort = request.querystring("f_wort")
Dim letterarray, l_letter
l_letter = request.querystring("f_letter")
letterarry = Split("l_letter")
If IsNumeric(request.querystring("f_zahl")) And Not IsNumeric(request.querystring("f_letter")) And Not IsNumeric(request.querystring("f_wort")) Then
Dim zahlarray, l_zahl
l_zahl = request.querystring("f_zahl")
zahlarry = Split("l_zahl")
Dim wortarray, l_wort
l_wort = request.querystring("f_wort")
wortarry = Split("l_wort")
l_replace = (Replace(l_wort, l_letter, l_zahl, 1, -1, 1))
ElseIf Not IsNumeric(request.querystring("f_zahl")) Then
l_replace = "Keine Zahl"
ElseIf IsNumeric(request.querystring("f_letter")) Then
l_replace = "Kein Buchstabe"
ElseIf IsNumeric(request.querystring("f_wort")) Then
l_replace = "Kein leetspeak"
End If
%>
<form action = "Replacer.asp" method = "get">
<table width = "800" heigth = "400" border="1" cellspacing="0" cellpadding="1" align = "center" font face="tahoma, arial, helvetica, sans-serif" >
<tr>
<td align = "left" width = "100">
Bitte Zahl eingeben
</td>
<td align = "left" width = "100">
<input type = "text" name = "f_zahl" value = "<%=l_zahl%>">
</td>
<td align = "left" width = "100">
Bitte Buchstabe eingeben
</td>
<td>
<input type = "text" name = "f_letter" value = "<%=l_letter%>">
</td>
<td>
Bitte ein Wort eingeben
</td>
<td align = "left" width = "100">
<input type = "text" name = "f_wort" value = "<%=l_wort%>">
</td>
<td width = "*">
<input type = "submit" value = "Ersetzen" \>
</td>
</tr>
<tr>
<td colspan = "2">
</td>
<td >
Verändertes Wort
</td>
<td colspan = "4">
<%=l_replace%>
</td>
</tr>
</table>
</body>
</html>
答案 0 :(得分:1)
Replace
函数用替换字符串(l_letter
)替换给定表达式(此处为l_wort
)中的搜索字符串(l_zahl
)。要用l_letter
替换l_zahl
中的所有字符,您需要在l_letter
中的每个字符的循环中进行替换。但是,Split
函数不允许您将字符串拆分为其字符数组。它将字符串拆分为给定的分隔符(默认为空格)。在没有空格的变量上调用Split
将为您提供一个只包含原始字符串的单个字段的数组。此外,VBScript不会在字符串中扩展变量,因此如果您将variable
放在双引号中,您将获得文字字符串"variable"
,而不是具有变量值的字符串。
var = "ab" : Split("var")
⇒[ "var" ]
var = "ab" : Split(var)
⇒[ "ab" ]
var = "a b" : Split(var)
⇒[ "a", "b" ]
要从字符串中提取单个字符,请使用Mid
函数:
l_replace = l_wort
For i=1 To Len(l_letter)
l_replace = Replace(l_replace, Mid(l_letter, i, 1), l_zahl)
Next
比在循环中进行多次替换更好的方法是使用regular expression替换:
Set re = New RegExp
re.Pattern = "[" & l_letter & "]"
l_replace = re.Replace(l_wort, l_zahl)
答案 1 :(得分:1)
将字符输入视为要替换的字母/字母集合:
Option Explicit
Dim f : f = "ab"
Dim t : t = "1"
Dim w : w = "abby"
WScript.Echo f, t, w
Dim i
For i = 1 To Len(f)
w = Replace(w, Mid(f, i, 1), t)
Next
WScript.Echo f, t, w
输出:
cscript 47469843.vbs
ab 1 abby
ab 1 111y