从文本中删除所需的内容

Posted

技术标签:

【中文标题】从文本中删除所需的内容【英文标题】:Remove the desired content from a text 【发布时间】:2013-03-28 10:52:48 【问题描述】:

我想获得一个工作代码,以简单地从文本行中删除始终以 "(" 开头并以 ")" 结尾的特定部分。

示例文本:Hello, how are you (it is a question)

我想删除这部分:"(it is a question)",只保留这条消息"Hello, how are you"

迷路了……

谢谢

【问题讨论】:

【参考方案1】:

一种使用Regular Expressions的方式;

input = "Hello, how are you (it is a question)"

dim re: set re = new regexp
with re
    .pattern = "\(.*\)\s?" '//anything between () and if present 1 following whitespace
    .global = true

    input = re.Replace(input, "") 
end with

msgbox input

【讨论】:

我会让比赛变得不贪婪。【参考方案2】:

如果要删除的部分总是在字符串的末尾,字符串操作也可以:

msg = "Hello, how are you (it is a question)"

pos = InStr(msg, "(")

If pos > 0 Then WScript.Echo Trim(Left(msg, pos-1))

【讨论】:

【参考方案3】:

如果句子总是以 ( ) 部分结尾,请使用拆分功能:

line = "Hello, how are you (it is a question)"

splitter = split(line,"(")        'splitting the line into 2 sections, using ( as the divider
endStr = splitter(0)              'first section is index 0

MsgBox endStr                     'Hello, how are you

如果是在句子中间,使用两次split函数:

line = "Hello, how are you (it is a question) and further on"

splitter = split(line,"(")
strFirst = splitter(0)             'Hello, how are you

splitter1 = split(line,")")        
strSecond = splitter1(UBound(Splitter1))    'and further on

MsgBox strFirst & strSecond        'Hello, how are you and further on

如果只有一个“( )”实例,那么您可以使用“1”代替 UBound。 多个实例我会拆分句子,然后分解包含“()”的每个部分并连接最后一个句子。

【讨论】:

Split 是一种从由单个字符分隔的字符串部分构建数组的工具。创造性地使用它来解决没有合适工具的问题,是可以的;但这里有两个很好的解决方案(RegExp、InStr()),它们处理了这种尝试完全忽略的虚假空间。 我已经在很多场合成功使用过它,并且没有遇到任何问题。可能这不是它的预期用途,但它可以使用,所以我不明白你对工作/可行解决方案的反对票。

以上是关于从文本中删除所需的内容的主要内容,如果未能解决你的问题,请参考以下文章

鉴于没有从 dropDownList 中选择任何内容,有没有办法手动触发所需的验证

获取显示视图中所有内容所需的高度

缺少平台 android 所需的内容重新安装 xcode

使用jQuery完全删除和替换Div内容

使用输入参数从包中调用所需的过程

构建正则表达式模式以最终从数据中选择所需的文本