2
    for(int i= 0 ;i<[urlsArrray count]; i++)
    {
        NSString *urlString = [urlsArrray objectAtIndex:i];
        NSString *escapedUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSURL *url = [NSURL URLWithString:escapedUrlString];

        NSString *urlstring1 = [url absoluteString];
        NSArray *parts = [urlstring1 componentsSeparatedByString:@"/"];
        NSString *fileName = [parts objectAtIndex:[parts count]-1];

        NSMutableString *tempString = [NSMutableString stringWithString:fileName];

       // [tempString replaceCharactersInRange:[tempString rangeOfString:@"%20"] withString:@" "];

                NSLog(@"file name in temp string: %@ word name: %@", tempString, wordNameDB);

                NSRange match = [tempString rangeOfString:wordNameDB];
                if(match.location != NSNotFound)
                {
                    NSLog(@"match found at %u", match.location);
                    isAvailable = YES;
                    break;
                }

嗨朋友们,现在我的问题是我从服务器获取文件名......,如果文件名有任何空格,那么它会替换 '%20' (例如:“hello world”是实际名称,但我得到的文件名是:“你好%20world”)。1. 我不确定所有文件名都有空格。2. 而且我也不确定一个文件可能只有一个空格

所以首先我必须检查文件是否有空格,如果有那么我想用@“”字符串替换所有“%20”。请给我任何建议或代码片段。

或者“还有其他方法可以读取文件名而不用在空格(@”“)的位置获取“%20”......谢谢

4

5 回答 5

2

如果您将文件名存储在fileNameparam 中,则可以使用以下内容:

fileName = [fileName stringByReplacingOccurrencesOfString:@"%20" withString:@" "];

上面的代码将全部替换"%20"" ". 如果 中没有"%20"fileName您将返回相同的字符串。

更正: 我对代码中提到的内容感到困惑,stringByAddingPercentEscapesUsingEncoding并认为您已经使用过stringByReplacingPercentEscapesUsingEncoding. 如果您不使用stringByReplacingPercentEscapesUsingEncoding方法,则应在这种情况下使用该方法。上面的代码很有用,只有当它不能删除你想要替换的任何特定字符串时。

于 2013-03-05T09:18:41.037 回答
1

您需要的是根据编码替换转义字符。使用它,您的所有空格和其他 URL 编码字符都将转换为您需要的字符。

[@"yourString" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2013-03-05T09:23:02.427 回答
1

有任何其他方式来读取文件名而不用在空格(@“”)的地方得到 '%20'

是的,使用这个:

NSString *newString = [yourstring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2013-03-05T09:23:15.480 回答
1

用它来删除空格..

urlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

于 2013-03-05T09:28:26.770 回答
0

您似乎已经有一个NSURL代表该文件的有效对象。从 URL 获取文件名很简单:

...
NSURL *url = [NSURL URLWithString:escapedUrlString];
NSString *path = [url path];
NSString *filename = [path lastPathComponent];

无需摆弄未转义的百分比转义、URL 解析和其他容易出错的东西。

于 2013-03-05T11:35:11.487 回答