获取最后一个' /'之后的所有字符来自url字符串的(斜杠)

时间:2016-03-23 10:37:32

标签: ios objective-c regex filter substring

如何获取最后一个' /'之后的所有字符(斜杠)来自url string?

我在为某个网站发出webview请求时,从我的URL方案中收到一个json字符串。例如:

  

应用:// GA /电子商务/%7B%22product%22:%22playstation4%22 ...}]

我想在最后' /'(斜杠)之后抓取子字符串。

我怎样才能实现它?我可以知道正则表达式的格式是什么吗?

避免使用

.directive('compileTemplate', function($compile, $parse){
    return {
        link: function(scope, element, attr){
            var parsed = $parse(attr.ngBindHtml);
            function getStringValue() { return (parsed(scope) || '').toString(); }

            //Recompile if the template changes
            scope.$watch(getStringValue, function() {
                $compile(element, null, -9999)(scope);  //The -9999 makes it skip directives so that we do not recompile ourselves
            });
        }         
    }
});

因为我的json中可能有转义' /'

谢谢。

6 个答案:

答案 0 :(得分:10)

对于Swift 3试试这个。

let fileName = "your/file/name/here"
let fileArray = fileName?.components(separatedBy: "/")
let finalFileName = fileArray?.last

输出:"这里"

答案 1 :(得分:2)

您可以在数组中拆分字符串并从数组中获取最后一个对象,如下所示:

NSString *myString = @"app://ga/ecommerce/product:playstation4"; 
NSArray* spliteArray = [myString componentsSeparatedByString: @"/"];
NSString* lastString = [spliteArray lastObject];

答案 2 :(得分:2)

试试这个:

    NSURL *url = [NSURL URLWithString:@"app://ga/ecommerce/%7B%22product%22:%22playstation4%22..."];
    NSString *last = [url lastPathComponent];

答案 3 :(得分:1)

创建NSURL并使用NSURL方法,如lastPathComponent或parameterString。这些方法可能是由知道如何处理URL的人编写的。

答案 4 :(得分:0)

你需要的正则表达式是这样的:

((\/){1}([a-z\-]*))$

其中包含1个斜杠,全部为小写字母和连字符。您可以在其中添加更多字符,例如A-Z表示大写字母(等),'$'表示从字符串末尾匹配它,

答案 5 :(得分:0)

好吧,似乎使用Regex在shouldStartLoadWithRequest委托中非常昂贵,特别是如果您拥有具有大量网络浏览量的混合应用程序。 webview中的一些网站可能有多个请求,有些是在后台运行。如果webview在每次webview加载请求时都触发正则表达式代码,那就太痛苦了。

而且,我已经逃脱了' /'在我的最后一个组件params(json string)中,它可能导致lastComponent在转义后的' /'字符。

因此,我坚持使用if-else语句进行代码过滤,并将字符串与URL的组件进行比较。例如

request.URL.absoluteString
request.URL.host
request.URL.fragment

并且还发现@Nitin Gohel很有用。