獲取URL最后一個 ‘/’ 之后的字符


在開發項目的過程中,經常遇到需要解析論壇,博客等的URL的問題,比如:'abc/def/jkl' 或 'abc/def/jkl/',獲取最后一個‘/’之后的所有字符‘jkl’,由於特殊字符'/'的個數不固定,從前向后正向解析URL,有點困難,其實有更簡單的方法,那就是逆向解析法。

逆向解析的思路非常簡單,因為最后一個特殊字符'/'的位置不確定,變通一下,使用reverse函數,將最后一個特殊字符'/'轉化為第一個特殊字符,獲取第一個特殊字符'/'之前的所有字符。 

Script1,用於不以 ‘\’結尾的URL

declare @ExpressionToSearch varchar(max)
set @ExpressionToSearch='/eeabc/def/abc/jkl'
--set @ExpressionToSearch='eeabc/def/abc/jkl'
--select reverse(@ExpressionToSearch)

select right(@ExpressionToSearch,
                iif(charindex('/',reverse(@ExpressionToSearch),1)=0,
                    len(@ExpressionToSearch),
                    charindex('/',reverse(@ExpressionToSearch),1)-1)
            )

script2,如果以'/'結尾,取最后兩個‘/'字符之間的字符串,類似從字符串 'abc/def/jkl/' 中取‘jkl’

declare @ExpressionToSearch varchar(max)
set @ExpressionToSearch='/eeabc/def/abc/jkl/'
--set @ExpressionToSearch='eeabc/def/abc/jkl'
--select reverse(@ExpressionToSearch)

select left(StrToSearch,len(StrToSearch)-charindex('/',reverse(StrToSearch),1))
from 
(
select right(@ExpressionToSearch,
                iif(charindex('/',reverse(@ExpressionToSearch),2)=0,
                    len(@ExpressionToSearch),
                    charindex('/',reverse(@ExpressionToSearch),2)-1)
            )
)as T(StrToSearch)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM