bluetooth99 2013-03-26 02:49 采纳率: 0%
浏览 1781

解码URL查询获得双反斜杠

解码一个iphoneURL查询。
代码如下:

   - (NSDictionary *)parseQueryString:(NSString *)query {
    NSArray *pairs = [query componentsSeparatedByString:@"&"];
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:[pairs count]];

    for (NSString *pair in pairs) {
        NSArray *elements = [pair componentsSeparatedByString:@"="];
        NSString *key = [elements objectAtIndex:0];
        NSString *val = [elements objectAtIndex:1];
        [dict setObject:val forKey:key];
    }
    return dict;
}

查询字符串:

station=124&serverip=demo\sqlexpress&username=test&password=noneofyourbusiness&serviceip=anumber&useimages=true&imagepath=pathforimages

在NSLog返回的dictionary时,服务器ip出现:

serverip = "demo\\sqlexpress"

不知道为什么出现了两个反斜杠,应该是一个。

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-19 22:50
    关注

    ChatGPT尝试为您解答,仅供参考
    在这个代码中,query字符串被拆分成一系列键值对,并且每一对都被分成一个键和一个值,使用"&"分隔键值对,使用"="分隔键和值。因此,在这种情况下,serverip的值是"demo\sqlexpress"。


    反斜杠('')在Objective-C中具有转义作用,可以将其后面的字符视为特殊字符。例如,在这个字符串中,反斜杠后面是一个"s"字符,因此反斜杠和"s"被视为一个单独的字符。


    所以,在这种情况下,serverip的值是"demo\sqlexpress",因为两个反斜杠('')被视为一个单独的反斜杠('')字符。


    如果你希望反斜杠只出现一次,你可以使用如下代码来解码查询字符串:

    NSString *decodedQuery = [query stringByReplacingOccurrencesOfString:@"\\" withString:@""];
    NSArray *pairs = [decodedQuery componentsSeparatedByString:@"&"];
    

    这样,在这个字符串中的所有反斜杠都会被移除,然后查询字符串就可以被正常解析了。

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题