ios学习第二天(一)对象之字符串NSString和NSMutableString

博主在学习Objective-C时对语法的怪异性感到困扰,尤其是NSString和NSMutableString的使用方式与Java中的String类大相径庭。在Java中可以方便地进行链式编程,而在Objective-C中则显得复杂。博主还提到了NSString的功能不足,不像Java的String类那样支持简单的字符串操作。此外,由于在不同系统间切换,快捷键混淆也增加了学习难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚才(2017年4月6日10:00 左右)学习NSString和NSMutableString的时候很生气,想骂人!!!先让我吐槽一下吧:oc语法好怪异,访问成员函数(方法)竟然是方括号形式,很不习惯,而且还很麻烦,用“.”的方式多容易啊。

例如:

在java中这样写:

People people = new People("张三");

people.chat("哈哈哈");


tmd在oc中要这样写!!!:

People *people=[[People alloc] initWithName:@"张三"];

[people chat:@"哈哈哈"];


请设想一下如果java中这样写的话:

String area=earth.getCountry("中国").getProvince("河南").getCity("郑州").getRegion("金水区").getArea().toString();

那么oc会怎么写???

NSString *area=[[[[[[area getCountry:@"中国"]  getProvince:@"河南"]  getCity:@"郑州"]  getRegion:@"金水区"]  getArea]   toString];

java中链式编程很常见,这个并不算长,看了对应的oc表达式后,会不会有种想摔乔布斯的冲动。唉,心累!!!!


容我再扯会淡,对oc的框架的NSString提供的方法也不满意,用着不爽。原计划这篇文章只写NSString的,结果为什么现在要写NSString和NSMutableString呢?是因为NSString不够强大,不像java一个String类增删改查功能一应俱全,用起来很方便,比如吧:

String s="哈哈哈";

int a=18;

s+=18;

s的值为"哈哈哈18",java中字符串连接就是这么简单,再看看oc怎么写

NSString *s=@"哈哈哈";

s=[s stringByAppendingFormat:@"  %d",18];

怎么样,很无语吧。

除此之外,用虚拟机频繁在windows 和mac系统间切换,导致复制粘贴的快捷键混淆,苹果,我恨你!!!!呜呜呜

------------------------------------------------------------扯淡分割线------------------------------------------------------------------------


扯淡结束,不说了,说多了都是类,累,泪和蛋疼。看代码吧骚年:


//
//  main.m
//  HelloWorld
//
//  Created by Moluth on 17/4/6.
//  Copyright (c) 2017年 Moluth. All rights reserved.
//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {
   
    NSString *s=@"123";
    
    //转化成数值
    int a=[s intValue];
    NSLog(@"%d  %lf\n",a,[s doubleValue]);// 123  123.000000   :  将字符串转化成数值
    
    
    //字符串长度
    NSLog(@"length=%ld",[s length]);//length=3    :   字符串长度
    
    
    //字符串连接
    NSLog([s stringByAppendingString:@"abc"],nil);//123abc    :   字符串连接
    NSLog([s stringByAppendingFormat:@"  %d年%d月%d日",2017,4,6],nil);//123  2017年4月6日    :   字符串连接
    
    
    //截取
    NSLog([s substringFromIndex:1],nil);//23     :     这个作用是从下标1开始截取到结尾
    NSLog([s substringToIndex:1],nil);//1      :     从头开始截取到下标为1的位置
    NSLog([s substringWithRange:NSMakeRange(1, 1)],nil);//2     :    从下标1开始截取长度为1的子串
    
    //查找
    NSLog(@"下标1的位置的字符是 %c",[s characterAtIndex:1]);//下标1的位置的字符是 2
    NSLog(@"%d",[s containsString:@"23"]);//1      :   查找"23" 是否在s中
    NSLog(@"%d",[s containsString:@"13"]);//0      :   查找"13" 是否在s中
    NSLog(@"%ld",[s rangeOfString:@"23"].location);//1      :      查找子串出现的位置
    
    //////////////////////////////////////////////////////
    
    NSMutableString *ms=[[NSMutableString alloc] initWithString:@"abcdefg"];
    
    //删除
    [ms deleteCharactersInRange:NSMakeRange(3,2)];
    NSLog(ms,nil);//abcfg
    
    //插入
    [ms insertString:@"de" atIndex:3];
    NSLog(ms,nil);//abcdefg
    
    
    return 0;//返回值
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值