【问题标题】:How does one find a '.' in a string object in Object-C如何找到一个“。”在 Object-C 中的字符串对象中
【发布时间】:2011-01-14 05:01:08
【问题描述】:

我正在开发一个简单的计算器,作为我学习 Object-C 和 iOS 开发的一部分。

在使用 NSString 的 Object-C 中,如何在字符串中查找句点?

根据 cmets,这是我目前得到的。

NSString * tmp = [display text];

NSLog(@"%@", tmp); // Shows the number on the display correctly

int x = [tmp rangeOfString:@"."].location;

NSLog(@"%i", x); // Shows some random signed number 

if (x < 0) {
    [display setText:[[display text] stringByAppendingFormat:@"."]]; 
} 

还是不行:(

【问题讨论】:

    标签: objective-c string nsstring nsrange


    【解决方案1】:

    NSRange 是一个直接的结构...

    typedef struct _NSRange {
          NSUInteger location;
          NSUInteger length;
    } NSRange;
    
    int x = [@"hello.there.ok" rangeOfString:@"."].location;
    printf("x is %d\n",x);
    

    打印 5.

    这是一个完整的程序:

    int main(int argc, char *argv[])
    {
        NSString *ht = @"This is a string";
        int r1 = [ht rangeOfString:@"is"].location;
        int r2 = [ht rangeOfString:@"is a"].location;
        int r3 = [ht rangeOfString:@"isnt"].location;
        NSLog(@"r1=%d, r2=%d, r3=%d, that's all\n",r1,r2,r3);
    }
    

    哪个打印:

    Program loaded.
    run
    [Switching to process 21098]
    Running…
    2011-01-14 20:45:25.192 DELETEME[21098:a0b] r1=2, r2=5, r3=-1, that's all
    

    在 XCode、Mac OS 中运行它...应该是直截了当的!

    【讨论】:

    • // 获取titleLabel Text中的字符串 NSString *digit = [[sender titleLabel] text]; int x = [digit rangeOfString:@"."].location; if (!x) { // 如果没有小数,执行这个 }
    • 从我的测试项目中添加了一个完整的 Main() ......非常简单。不知道为什么你的会有“随机值”,除了 [显示文本] 正在返回一些疯狂的东西。
    • 我复制并粘贴了您上面的内容,这是我的控制台输出:“r1=2, r2=5, r3=2147483647, 仅此而已”有什么想法吗?
    • 这……令人惊讶! 2147483647 是 0x7FFFFFFF 不完全是 -1。您是在 Mac OS X、iPhone 或 iPhone sim 上运行它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    相关资源
    最近更新 更多