Removing last characters of NSString until it hits a separator
ios, nsstring, objective-c, substring
Solution
Why not use `componentsSeparatedByString` followed by `lastObject` ?
`NSString *supplierStock = [[string1 componentsSeparatedByString:@"-"] lastObject];`
The above works if the "stock amount" is always in sets of 3's separated by a "-". Also since you always want supplierStock, `lastObject` is perfect for your needs.
Of course after splitting `string1` with `-` you get a `NSArray` instance and you can access the individual components using `objectAtIndex:index`. So if you want `localStock` you can get by
`NSString *localStock = [[string1 componentsSeparatedByString:@"-"] objectAtIndex:0];`
Problem
I've got a string that shows the stock amount using "-" as separators. It's built up like this: `localStock`-`wareHouseStock`-`supplierStock` Now I want to update the supplierStock at the end of the string, but as you can see in the code below it goes wrong when the original string returns more than a single-space value (such as 20). Is there a way to remove all characters until the last "-" (or remove characters after the second "-")? ``` NSMutableString *string1 = [NSMutableString stringWithString: p1.colorStock]; NSLog(@"string1: %@",string1); NSString *newString = [string1 substringToIndex:[string1 length]-2]; NSLog(@"newString: %@",newString); NSString *colorStock = [NSString stringWithFormat:@"%@-%@",newString,p2.supplierStock]; NSLog(@"colorstock: %@",colorStock); p1.colorStock = colorStock; ``` NSLog1 ``` string1: 0-0-0 newString: 0-0 colorstock: 0-0-20 ``` NSLog2 ``` string1: 0-0-20 newString: 0-0- colorstock: 0-0--20 ``` EDIT: Got it working thanks to Srikar! ``` NSString *string1 = [NSString stringWithString: p1.colorStock]; NSLog(@"string1: %@",string1); NSString *finalString = [string1 stringByReplacingOccurrencesOfString:[[string1 componentsSeparatedByString:@"-"] lastObject] withString:p2.supplierStock.stringValue]; NSLog(@"finalString: %@",finalString); p1.colorStock = finalString; ```