ColdFusion -使用RefindNoCase的字符串最后一次出现



我使用RefindNoCase来查找字符串的最后一次出现。这是我使用的代码:

<cfset result= REfindNoCase('-[A-Z]{3}', variables.textBeforeFirstName, 1, "true")>

这应该返回一个包含每次出现的位置和长度的数组,但它只返回第一个。在特定的字符串上,我有3次出现,我只需要最后一次。因为我不知道每个字符串有多少次出现,我应该如何得到最后一个?

你可以试试这个

<cfset result= REfindNoCase('-[A-Z]{3}$', variables.textBeforeFirstName, 1, "true")>

<cfoutput>
    #result.pos[1]#
</cfoutput>

我找到了一个手动解决方案作为变通方法,因为似乎Coldfusion没有匹配所有情况的功能。我所做的是创建一个搜索子字符串的循环,如果它找到它,那么它就从当前字符串中删除前面的文本。当剩余的字符串中没有其他出现时,循环停止,因此变量中最后出现的就是您要查找的。这是代码:

    <cfloop condition="continueParse eq true">
        <cfset airportService= REfindNoCase('-[A-Z]{3}', variables.textBeforeFirstName, 1, "true")>
        <cfif airportService.len[1] gt 0>
            <cfset variables.airportServiceName = #mid(variables.textBeforeFirstName,airportService.pos[1],airportService.len[1])#>
            <cfset variables.textBeforeFirstName = #right(variables.textBeforeFirstName,#len(variables.textBeforeFirstName)#-(airportService.pos[1]+airportService.len[1]))#>   
            #variables.airportServiceName#<br/>
        <cfelse>
            <cfset continueParse = false>
        </cfif>
    </cfloop>

相关内容

最新更新