String VBScript字符串是否替换为范围而不是字符串?

String VBScript字符串是否替换为范围而不是字符串?,string,vbscript,replace,String,Vbscript,Replace,已存在,但该函数将字符串作为参数。我需要射程 在我的字符串中有两个10个字符长的“字符串”。 Greger包含6个字符和4个空格,另一个字符串包含10个字符 "Greger AASSDDFFGG" 我想用“googlioa” 我要找的基本上是: Replace(MyString,1,10) = "googlioa " 有什么办法可以做到这一点吗?如果它们总是10个字符,只需填入名称即可 strNameFind = "Greger" strNameReplace = "googl

已存在,但该函数将字符串作为参数。我需要射程

在我的字符串中有两个10个字符长的“字符串”。 Greger包含6个字符和4个空格,另一个字符串包含10个字符

"Greger    AASSDDFFGG"
我想用
“googlioa”

我要找的基本上是:

Replace(MyString,1,10) = "googlioa  "

有什么办法可以做到这一点吗?

如果它们总是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)

如果它们总是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)

如果它们总是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)

如果它们总是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)

如果要严格按位置替换,请使用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
    有风险-应检查
  • 填充新字符串wrt l(长度)
  • 也许您想在连接之前搜索(Instr())旧的(“Greger”)
  • 再三考虑(并偷走邦德的填充物):

    也许我应该将10解释为to/till/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
    

    更好地匹配您的规格。

    如果要严格按照位置进行替换,请使用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
    有风险-应检查
  • 填充新字符串wrt l(长度)
  • 也许您想在连接之前搜索(Instr())旧的(“Greger”)
  • 再三考虑(并偷走邦德的填充物):

    也许我应该将10解释为to/till/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
    

    更好地匹配您的规格。

    如果要严格按照位置进行替换,请使用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
    有风险-应检查
  • 填充新字符串wrt l(长度)
  • 也许您想在连接之前搜索(Instr())旧的(“Greger”)
  • 再三考虑(并偷走邦德的填充物):

    也许我应该将10解释为to/till/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
    

    更好地匹配您的规格。

    如果要严格按照位置进行替换,请使用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
    有风险-应检查
  • 填充新字符串wrt l(长度)
  • 也许您想在连接之前搜索(Instr())旧的(“Greger”)
  • 再三考虑(并偷走邦德的填充物):

    也许我应该将10解释为to/till/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
    

    更好地匹配您的规格。

    这几乎可以做到。谢谢这差不多就是它。谢谢这差不多就是它。谢谢这差不多就是它。谢谢