gg13
gg13

Reputation: 574

ios method to insert spaces in string

In my app I download a file from amazon's s3, which does not work unless the file name has no spaces in it. For example, one of the files is "HoleByNature". I would like to display this to the user as "Hole By Nature", even though the file name will still have no spaces in it.

I was thinking of writing a method to search through the string starting at the 1st character (not the 0th) and every time I find a capital letter I create a new string with a substring until that index with a space and a substring until the rest.

So I have two questions.

  1. If I use NSString's characterAtIndex, how do I know if that character is capital or not?
  2. Is there a better way to do this?

Thank you!

Upvotes: 1

Views: 2274

Answers (3)

Jano
Jano

Reputation: 63667

Works for all unicode uppercase and titlecase letters

- (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;
}

Upvotes: 4

gg13
gg13

Reputation: 574

Got it working with Jano's answer but using the isupper function as suggested by Richard J. Ross III.

- (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;
}

Upvotes: 0

Mahmoud Fayez
Mahmoud Fayez

Reputation: 3459

I would not go to that approach because I know you can download files with spaces try this please when you construct the NSUrl object @"my_web_site_url\sub_domain\sub_folder\My%20File.txt

this will download "My File.txt" from the URL provided. so basically you can replace all spaces in the URL with %20

reference:

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

Upvotes: 2

Related Questions