1

私のアプリでは、Amazonのs3からファイルをダウンロードします。これは、ファイル名にスペースが含まれていないと機能しません。たとえば、ファイルの1つは「HoleByNature」です。ファイル名にスペースが含まれていなくても、これを「HoleByNature」としてユーザーに表示したいと思います。

最初の文字(0番目ではない)から始まる文字列を検索するメソッドを作成することを考えていました。大文字を見つけるたびに、スペースを含むインデックスまでの部分文字列と、残りの文字列までの部分文字列を使用して新しい文字列を作成します。 。

だから私は2つの質問があります。

  1. NSStringのcharacterAtIndexを使用する場合、その文字が大文字であるかどうかをどのように知ることができますか?
  2. これを行うためのより良い方法はありますか?

ありがとうございました!

4

3 に答える 3

4

すべての Unicode 大文字およびタイトルケース文字で機能します

- (NSString*) spaceUppercase:(NSString*) text {
    NSCharacterSet *set = [NSCharacterSet uppercaseLetterCharacterSet];
    NSMutableString *result = [NSMutableString new];
    for (int i = 0; i < [text length]; i++) {
        unichar c = [text characterAtIndex:i];
        if ([set characterIsMember:c] && i!=0){
            [result appendFormat:@" %C",c];
        } else {
            [result appendFormat:@"%C",c];
        }
    }   
    return result;
}
于 2012-08-27T00:11:19.597 に答える
2

NSUrl オブジェクト @"my_web_site_url\sub_domain\sub_folder\My%20File.txt

これにより、提供された URL から「My File.txt」がダウンロードされます。したがって、基本的には URL 内のすべてのスペースを %20 に置き換えることができます

参照:

http://www.w3schools.com/tags/ref_urlencode.asp

于 2012-08-27T00:40:27.930 に答える
0

Janoの回答で動作しましたが、Richard J. Ross IIIが提案した isupper 関数を使用しました。

- (NSString*) spaceUppercase:(NSString*) text 
{
    NSMutableString *result = [NSMutableString new];
    [result appendFormat:@"%C",[text characterAtIndex:0]];
    for (int i = 1; i < [text length]; i++) 
    {
         unichar c = [text characterAtIndex:i];
         if (isupper(c))
         {  
             [result appendFormat:@" %C",c];
         } 
         else 
         {
             [result appendFormat:@"%C",c];
         }
    }
    return result;
}
于 2012-08-27T01:32:01.237 に答える