zoukankan      html  css  js  c++  java
  • 获取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)
  • 相关阅读:
    zookeeper 入门知识
    MySQL: InnoDB的并发控制,锁,事务模型
    分布式理论: CAP、BASE (转)
    Nginx 入门了解
    基于RSA的前后端登陆密码加密JAVA实现(转)
    分库分表?如何做到永不迁移数据和避免热点? (转)
    node.js(一)
    c# 事件
    C#委托
    SQL Server控制执行计划
  • 原文地址:https://www.cnblogs.com/ljhdo/p/5068109.html
Copyright © 2011-2022 走看看