如何仅按位置删除字符串中的字符?

How to delete chars in string by position only?

我需要一个正则表达式搜索和替换对,它将从某个可定义的位置开始从字符串中删除 'n' 个字符。例如,要删除从位置 5 开始的 3 个字符。在这种情况下,字符串

AAA. 01 Data From July

会变成

AAA. Data from July

(不知道我是否已经从 0/1 的正确位置开始计数。这就是我需要通用解决方案的原因之一。)

可以假设字符串足够长以支持操作,但如果它对太短的字符串不做任何事情就很好了。

我正在使用的应用程序有一个 VBScript 正则表达式引擎。我在网上搜索了我能想象到的关于这个请求的每一个变体,但即使有所有的正则表达式建议,这似乎也是新的。我以为这几乎是食谱。我也尝试过自己做,但无法弄清楚如何将引擎定位在捕获点。

假设您的应用程序包含配置替换的选项,您可以使用这样的反向引用替换:

(.{5}).{3}(.*)
  • (.{5}) 匹配前 5 个字符
  • .{3} 消耗接下来的 3 个字符
  • (.*) 匹配所有剩余字符

反向引用替换</code>(取决于应用<code>\1\2)将连接匹配组一和二,所以基本上删除第二个表达式的三个字符,因为他们没有组成比赛组。

https://regex101.com/r/aC8fQ9/2

有了固定的 positions/lengths 你也可以使用 Mid 函数:

Function RemoveSubstring(str, start, length)
  RemoveSubstring = Mid(str, 1, start - 1) & Mid(str, start + length)
End Function