Replace()已經存在,但該函數將字符串作爲參數。我需要範圍。VBScript字符串替換範圍而不是字符串?
在我的字符串中有兩個長度爲10個字符的「字符串」。 格格用6個字符和4個空格,另一個字符串用10個字符。
"Greger AASSDDFFGG"
我想替換"Greger "
與"googlioa "
我在找什麼,基本上是這樣的:
Replace(MyString,1,10) = "googlioa "
有什麼辦法來實現這一目標?
Replace()已經存在,但該函數將字符串作爲參數。我需要範圍。VBScript字符串替換範圍而不是字符串?
在我的字符串中有兩個長度爲10個字符的「字符串」。 格格用6個字符和4個空格,另一個字符串用10個字符。
"Greger AASSDDFFGG"
我想替換"Greger "
與"googlioa "
我在找什麼,基本上是這樣的:
Replace(MyString,1,10) = "googlioa "
有什麼辦法來實現這一目標?
,使用Left(),new和Mid()的連接。爲了讓你開始:
>> Function replByPos(s, f, l, n)
>> replByPos = Left(s, f-1) & n & Mid(s, f + l - 1)
>> End Function
>> s = "Greger AASSDDFFGG"
>> r = replByPos(s, 1, 10, "googlioa ")
>> WScript.Echo s
>> WScript.Echo r
>>
Greger AASSDDFFGG
googlioa AASSDDFFGG
>>
進一步增強:
f(rom) - 1
是有風險的 - 應該檢查On s第二個想法(和竊取邦德的填充):
也許我應該介紹10作爲/到/ upto價值,而不是長度/寬度規範。所以,看是否
Option Explicit
Function replByPos(src, from, till, ns)
Dim w : w = till - from
replByPos = Left(src, from - 1) & Left(ns & Space(w), w) & Mid(src, till)
End Function
Dim s : s = "Greger AASSDDFFGG"
Dim ns : ns = "googlioa"
WScript.Echo s
WScript.Echo replByPos(s, 1, 10, ns)
s = "Whatever Greger AASSDDFFGG"
ns = "googlioa"
Dim p : p = Instr(s, "Greger")
WScript.Echo s
WScript.Echo replByPos(s, p, p + 10, ns)
輸出:
cscript 22811896.vbs
Greger AASSDDFFGG
googlioa AASSDDFFGG
Whatever Greger AASSDDFFGG
Whatever googlioa AASSDDFFGG
您的規格相匹配較好。
如果他們總是10個字符,只需填上名字。
strNameFind = "Greger"
strNameReplace = "googlioa"
' Pad the names...
strNameFind = Left(strNameFind & Space(10), 10)
strNameReplace = Left(strNameReplace & Space(10), 10)
MyString = Replace(MyString, strNameFind, strNameReplace)
另外,如果你不希望適當地確定現有的名字,只是墊你的新名字,並添加您的字符串的其餘部分:如果你想通過位置嚴格更換
' Pad the new name to fit in a 10-char column...
strNameReplace = "googlioa"
strNameReplace = Left(strNameReplace & Space(10), 10)
' Update the record...
MyString = strNameReplace & Mid(MyString, 11)
這幾乎是它。謝謝! – doge