如何在“#”之前删除字符串?

时间:2011-04-08 11:32:53

标签: iphone objective-c cocoa-touch string nsstring

有一个字符串。

  

NSString * test = @“1997#test”

我想在“#”之前删除字符串。
它改变如下:

  

NSString * test = @“test”

你能帮助我吗?

6 个答案:

答案 0 :(得分:3)

使用标准NSString API方法:

NSString* test = @"1997#test";
NSArray* parts = [test componentsSeparatedByString:@"#"];
NSString* result = [parts count] > 1 ? [parts objectAtIndex: 1] : [parts objectAtIndex: 0];

或者,如果这有点过于迟钝(我个人认为是这样),您可以使用NSString+JavaAPI类别然后执行:

NSString* test = @"1997#test";
NSString* result = [test substringFromIndex: [test indexOf:@"#"] + 1];

答案 1 :(得分:2)

从技术上删除#之前的字符串会留下“#test”。

无论如何,请使用- [NSString componentsSeparatedByString:]

test = [[test componentsSeparatedByString:@"#"] lastObject];

请注意,这种做法很脆弱:如果您有2 #,那么您最终只会得到最后一部分,例如来自“abc#bar#foo”的“foo”。

使用lastObject代替objectAtIndex:表示如果字符串中没有#,那么您将获得原始字符串而不是崩溃。

答案 2 :(得分:1)

不是说这比其他方式更好,但我很高兴看到我能在没有 componentsSeparatedByString objectAtIndex 的情况下做到这一点。

NSString* oldString = @"1976#test";
int stringLocation = [oldString rangeOfString:@"#" ].location +1 ;
NSString* newString =[oldString substringWithRange: NSMakeRange (stringLocation,[oldString length] -  stringLocation )];

答案 3 :(得分:0)

NSArray *components=[test componentsSeparatedByString:@"#"];
NSString *test=[components objectAtIndex:1];

它会帮助你

答案 4 :(得分:0)

如果字符串中只有一个哈希符号,你只需使用NSString componentsSeparatedByString方法返回一个数组,然后简单地将数组的第一个元素插入到字符串。

例如:

NSString *test = @"1997#test";
NSArray *stringComponents = [test componentsSeparatedByString:@"#"];
NSString *test = [stringComponents objectAtIndex:1];

答案 5 :(得分:-1)

NSString * test = @“Chetan#iPhone#test”;

NSArray * stringComponents = [test componentsSeparatedByString:@“#”];

for(int i = 0; i< [stringComponents count]; i ++)

{

 NSString *test = [stringComponents objectAtIndex:i];

 if ([test isEqualToString:@"test"] == true)

 {

      NSLog(@"found");

      break;

 }

}