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

时间:2015-06-19 21:36:23

标签: regex vbscript

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

  

AAA。 01 7月的数据

会变成

  

AAA。 7月的数据

(不知道我是否已经开始计算在正确的位置0/1。这是我需要一般解决方案的一个原因。)

可以假设字符串足够长以支持操作,但如果它在一个太短的字符串上什么都不做就会非常好。

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

2 个答案:

答案 0 :(得分:1)

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

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

反向引用替换\1\2(取决于应用程序\\1\\2$1$2)将连接匹配组1和2,因此基本上删除第二个表达式的三个字符,因为它们是没有组成一个匹配组。

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

答案 1 :(得分:0)

使用固定位置/长度,您还可以使用Mid功能:

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