gpt4 book ai didi

string - 如何删除字符串中最后一次出现的字符?

转载 作者:行者123 更新时间:2023-12-02 05:04:45 24 4
gpt4 key购买 nike

我目前正在编写一个动态组合 sql 查询以检索大量帖子的函数,但我遇到了一个较小的问题。

伪代码:

if trim$(sSqlQuery) <> "" then

sSqlQuery = "foo foo ) foo"

end if


if 1 = 1 then

sSqlQuery = sSqlQuery & "bar bar bar"

end if

此函数大部分时间返回正确的 sql 查询,但由于在此函数之前的早期函数中的某些情况,将触发第二个 if 子句。导致奇怪的查询结果。

我需要做的是弄清楚如何在将第二组查询附加到第二个 if 子句中的总查询之前删除 sSqlQuery 中最后一次出现的“)”。

在伪我认为它看起来像这样:

if 1 = 1 then

call removeLastOccurringStringFromString(sSqlQuery, ")")

sSqlQuery = sSqlQuery & "bar bar bar"

end if

但是,我发现很难掌握 Right() Left()Mid() 函数。

我试过的是这样的:

nLen = InStrRev(sSqlSokUrval, ")") ' To get the positional value of the last ")" 

在那之后我完全迷路了。因为如果我用 Mid() 对其进行子字符串化,我将只会得到“)”,而不会得到其他任何东西。

任何关于如何解决这个问题的想法和/或提示都将不胜感激!谢谢!

最佳答案

'Searches subject and removes last (and *only* last) occurence of the findstring
Function RemoveLastOccurenceOf(subject, findstring)
Dim pos
'Find last occurence of findstring
pos = InstrRev(subject, findstring, -1, vbBinaryCompare) 'use vbTextCompare for case-INsensitive search

if pos>0 then 'Found it?
'Take left of subject UP UNTIL the point where it was found
'...Skip length of findstring
'...Add rest of string
RemoveLastOccurenceOf = Left(subject, pos - 1) & Mid(subject, pos + len(findstring))
else 'Nope
'Return entire subject
RemoveLastOccurenceOf = subject
end if
End Function

关于string - 如何删除字符串中最后一次出现的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16435728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com