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」を置き換えます(つまり、例:「helloworld」は実際の名前ですが、次のようなファイル名を取得しています:"hello%20world")。1.すべてのファイル名にスペースが含まれているのかわかりません。2.また、ファイルにスペースが1つしかないかどうかもわかりません

したがって、最初にファイルにスペースが含まれているかどうかを確認する必要があります。スペースがある場合は、すべての "%20"を@""文字列に置き換えます。提案やコードスニペットを教えてください。

または「スペースの場所に「%20」を取得せずにファイル名を読み取る他の方法があります(@ "").....ありがとうございます

4

5 に答える 5

2

ファイル名がfileNameparam に保存されている場合は、次を使用できます。

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

上記のコードは all"%20"をに置き換えます" "。にない場合は"%20"fileName同じ文字列が返されます。

訂正:コード内で言及されている と混同しstringByAddingPercentEscapesUsingEncodingており、すでに を使用していると思いstringByReplacingPercentEscapesUsingEncodingました。メソッドを使用していない場合はstringByReplacingPercentEscapesUsingEncoding、この場合にそれを使用する必要があります。上記のコードは、置き換えたい特定の文字列を削除できない場合にのみ役立ちます。

于 2013-03-05T09:18:41.037 に答える
1

これを使用してスペースを削除します..

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

于 2013-03-05T09:28:26.770 に答える
1

必要なのは、エンコーディングに従ってエスケープ文字を置き換えることです。これを使用すると、すべてのスペースとその他の URL エンコード文字が必要なものに変換されます。

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

スペース (@" ") の代わりに '%20' を取得せずにファイル名を読み取る他の方法があります

はい、これを使用します:

NSString *newString = [yourstring stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2013-03-05T09:23:15.480 に答える
0

NSURLファイルを表す有効なオブジェクトがすでにあるようです。URLからファイル名を取得するのは簡単です。

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

エスケープしないパーセントエスケープ、URL解析、およびその他のエラーが発生しやすいものをいじる必要はありません。

于 2013-03-05T11:35:11.487 に答える