regex iOS:从url字符串中获取最后一个“/”(斜杠)之后的所有字符

wsewodh2  于 2023-01-21  发布在  iOS
关注(0)|答案(6)|浏览(375)

如何从url字符串中获取最后一个'/'(斜杠)之后的所有字符?
当我对某个网站进行webview请求时,我从我的URL方案中接收到一个json字符串。例如:
应用程序://ga/电子商务/%7B%22产品%22:%22游戏机4%22 ...}]
我想获取last'/'(斜杠)后面的子字符串。
我怎样才能做到呢?请问正则表达式的格式是什么?
避免使用

NSRange lastDotRange = [sURL rangeOfString:@"/" options:NSBackwardsSearch];

因为我可能在我的json中逃脱了'/'
谢谢你。

suzh9iv8

suzh9iv81#

对于Swift 3,试试这个。

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

输出:“此处”

yjghlzjz

yjghlzjz2#

试试这个:

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

2mbi3lxu3#

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

qybjjes1

qybjjes14#

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

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

ulydmbyx5#

您需要的正则表达式如下所示:
((\/){1}([a-z\-]*))$
它将匹配一个斜杠,所有的小写字母和连字符。你可以在那里添加更多的字符,像A-Z的大写字母(等),和'$'的地方匹配它从字符串的结尾,

9wbgstp7

9wbgstp76#

看起来在shouldStartLoadWithRequest委托中使用正则表达式是相当昂贵的,特别是如果你有一个混合应用程序,它有很多网页视图。我的一些网页视图中可能有多个请求,一些在后台运行。如果每次网页视图加载请求时,网页视图都会触发正则表达式代码,这是很痛苦的。
另外,我在最后一个组件参数(json字符串)中转义了“/”,这可能会导致lastComponent在转义的“/”字符后中断。
因此,我坚持使用if-else语句进行代码过滤,并将字符串与URL的组成部分进行比较,例如

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

还发现@Nitin Gohel很有用。

相关问题