【问题标题】:Separating a single string into two Different Strings in Objective-C在 Objective-C 中将单个字符串分成两个不同的字符串
【发布时间】:2011-09-20 13:23:43
【问题描述】:

我刚开始使用 Objective-C 和 iphone 应用程序开发,我正在尝试设计一个计算器应用程序,我使用的逻辑是这样的: 当用户单击任何按钮时,我会通过 [sender titleForState:UIControlStateNormal] 方法,然后继续将其附加到字符串(NSString *result)上。 假设用户输入 123+456 ,然后在我的字符串中我将有“123+456”,现在我想要两个字符串“123”和“456”,以便我可以通过 [result intValue] 方法添加它们。

所以我的问题是,我如何获得这两个单独的字符串(“123”和“456”)?

带有合适方法的示例代码会很有帮助。

【问题讨论】:

  • 要支持( ) 和运算符优先级,您应该考虑将输入解析为标记并使用语法。

标签: iphone objective-c ios string nsstring


【解决方案1】:
NSString * mystring = @"123+456";
NSArray * array = [mystring componentsSeparatedByString:@"+"];
NSString * str1 = [array objectAtIndex:0]; //123
NSString * str2 = [array objectAtIndex:1]; //456

【讨论】:

  • 非常感谢!这正是我想要的。 :)
【解决方案2】:

NSString tokenize in Objective-C找到这个

http://borkware.com/quickies/one?topic=NSString 找到这个(有用的链接):

NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];

希望这会有所帮助!

亚当

NSString *string = @"123+456";
NSArray *chunks = [string componentsSeparatedByString: @"+"];

int res = [[chunks objectAtIndex:0] intValue]+[[chunks objectAtIndex:1] intValue];

【讨论】:

  • 缺少“objectAtIndex”方法,但我想你希望我能弄清楚:p,我当然不能,因为我正处于学习阶段。 Neway,我很感谢您抽出宝贵的时间来思考答案,也感谢您的回答。谢谢。
【解决方案3】:
NSArray* yourTwoStrings = [@"123+456" componentsSeparatedByString:@"+"];

【讨论】:

    【解决方案4】:

    您可以使用 NSStrings componentsSeparatedByString: 分隔字符串

    NSString *calculation = @"1235+4362";
    NSArray *results = [calculation componentsSeparatedByString:@"+"];
    
    NSLog(@"Results: %@", results);
    

    如果您正在尝试实现一个计算器,您可能需要熟悉 Reverse Polish NotationShunting-Yard Algorithm,因为您会发现尝试创建一个简单的计算器会比预期的更具挑战性..

    【讨论】:

    • 非常感谢后缀和算法的建议。但问题是我想在不使用任何推送弹出机制(即堆栈)的情况下做到这一点。如果我的努力没有成功,我肯定会使用后缀方法:),谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多