How to capture last 4 characters from NSString

24,849

Solution 1

Use the substringFromIndex method,

OBJ-C:

NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)]; //in case string is less than 4 characters long.

SWIFT:

let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-4,0))

Solution 2

Try This,

NSString *lastFourChar = [yourNewString substringFromIndex:[yourNewString length] - 4];
Share:
24,849
C.Johns
Author by

C.Johns

Updated on December 08, 2020

Comments

  • C.Johns
    C.Johns over 3 years

    I am accepting an NSString of random size from a UITextField and passing it over to a method that I am creating that will capture only the last 4 characters entered in the string.

    I have looked through NSString Class Reference library and the only real option I have found that looks like it will do what I want it to is

    - (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
    

    I have used this once before but with static parameters 'that do not change', But for this implementation I am wanting to use non static parameters that change depending on the size of the string coming in.

    So far this is the method I have created which is being passed a NSString from an IBAction else where.

    - (void)padString:(NSString *)funcString
    {
    
        NSString *myFormattedString = [NSString stringWithFormat:@"%04d",[funcString intValue]]; // if less than 4 then pad string
        //   NSLog(@"my formatedstring = %@", myFormattedString);
    
        int stringLength = [myFormattedString length]; // captures length of string maybe I can use this on NSRange?
    
    
        //NSRange MyOneRange = {0, 1}; //<<-------- should I use this? if so how?
    
    }
    
  • C.Johns
    C.Johns almost 13 years
    that gives me a warning saying (instance method subStringFromIndex not found type defaults to 'id')
  • C.Johns
    C.Johns almost 13 years
    Ah, its substringFromIndex not subStringFromIndex, case sensitive :) thanks alot Kingofbliss
  • SwiftArchitect
    SwiftArchitect about 11 years
    Actually, you should probably protects yourself by using: NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)]; in case string is less than 4 characters long.
  • Gary
    Gary almost 8 years
    Some loose thoughts: 1.) do not call [substringFromIndex:] unless necessary, 2.) NSString [length] is declared as @property so use the dot notation, 3.) Type-emphasized pointer style forever! ;) NSString* trimmedString = string.length > 4 ? [string substringFromIndex:(string.length - 4)] : string;