2

RefindNoCase を使用して、最後に出現した文字列を見つけています。これは私が使用しているコードです:

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

これは、出現ごとに位置と長さを含む配列を返すことになっていますが、最初のものだけを返します。特定の文字列には 3 つのオカレンスがあり、最後の 1 つだけが必要です。各文字列が何回出現するかわからないため、最後の文字列を取得するにはどうすればよいですか?

4

2 に答える 2

2

これを試すことができます。

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


<cfoutput>
    #result.pos[1]#
</cfoutput>
于 2015-05-21T12:25:04.590 に答える
0

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>
于 2015-05-21T12:24:23.283 に答える