NSString 使用方法

本文详细介绍Objective-C中NSString与NSMutableString的使用方法,包括创建、格式化、比较、搜索及替换等操作。

objective-c 中核心处理字符串的类是NSString 与 NSMutableString,这两个类最大的区别就是NSString创建赋值以后该字符串的内容与长度不能再动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。

//一、NSString   

 /*------------------------------创建字符串的方法--------------------------------*/

//1、创建字符串。

NSString *string =@"This is a String";

NSString 与 char*最大的区别就是NSString是一个objective对象,而char*是一个字节数组。@”字符串”这个符号为objective-c NSString字符串常量的标准用法,char*创建的时候无需添加@

//字符串格式化合并分别包括  //NSString*类型 int类型 char*类型 

    NSString *str1 = [NSString stringWithFormat:@"我的名字: %@ 我的年龄:%d我的邮箱:%s",@"岩松",25,"bokan@sohu.com"];

    //字符串赋值参数中只可以写一个字符串和第一种很像

   NSString *str2 = [NSString stringWithString:@"我的字符串"];

    

    //字符串转换为utf-8格式参数为char*类型

    NSString *str3 = [NSString stringWithUTF8String:"字符串转换utf-8格式"];

    

    //字符串合并

   int i =100;

    char *c ="xuanyusong";

   NSString *temp =@"我是临时字符串";

    //在字符串temp的基础继续添加 int i  char* c组成一个新的字符串

   NSString *str4 = [temp stringByAppendingFormat:@"整型:%d字符型:%s",i,c];

    

    //在字符串temp的基础继续添加temp并组成一个新的字符串

   NSString *str5 = [temp stringByAppendingString:temp];

   NSLog(@"str1 = %@",str1);

   NSLog(@"str2 = %@",str2);

   NSLog(@"str3 = %@",str3);

   NSLog(@"str4 = %@",str4);

   NSLog(@"str5 = %@",str5);


//2、创建空字符串,给予赋值。

   NSString *string = [[NSString alloc]init];
    string = 
@"This is a String!";
    [string 
release];
    
NSLog(@"string:%@", string);
    
    
NSString * string1 = [[NSString alloc]init];
    
NSLog(@"0x%.8x", string1);
    string = 
@"This is a String!";
    
NSLog(@"0x%.8x", string1);
    [string1 
release];
    
NSLog(@"string1:%@", string1);

   //经典的字符串赋值

    NSString *string =@"[PDF:\"http://218.75.38.115:8080/gdsy\fawenguanli.nsf/0/540969EE9C8E9A8E4825796C002100BE/$file/%E6%B5%8B%\"E8%AF%95.pdf\"]测试.pdf[/PDF]"

   NSLog(@"string = %@",string);

    

    //遍历字符串中的每一个字符

   for (int i =0; i < [string length]; i++) 

    {

       char c = [string characterAtIndex:i];

       NSLog(@"字符串第 %d %c",i,c);

    }

//3、在以上方法中,提升速度:initWithString方法 

NSString *string = [[NSString alloc]initWithString:@"This is a String!"];
 
NSLog(@"string:%@",string);
[string 
release];

//4、用标准c创建字符串:initWithCString方法 char *Cstring ="This is a String!";
  
NSString *string = [[NSString alloc]initWithCString:Cstring];
  
NSLog(@"string:%@", string);
 [string 
release];

//5、创建格式化字符串:占位符(由一个%加一个字符组成)   int i =1;
    
int j =2;
    
NSString *string = [[NSString alloc]initWithString:[NSString stringWithFormat:@"%d.This is %i string!",i,j]];
    
NSLog(@"string:%@",string);
    [string 
release];


//6、NSString中的length方法返回字符串中的字符的个数,如:

   NSString *string = [[NSString allocinitWithString:@"OneTwoFour"];

    NSLog(@"string :%d",[@"OneTwoFour"length]);//返回10

//7、创建临时字符串

NSString *string = [NSString stringWithCString:"This is a temporary string"];

NSLog(@"string:%@",string);

/*--------------------从文件读取字符串:initWithContentsOfFile方法--------------------*/    

NSString *path = @"string.text";NSString *string = [[NSString alloc] initWithContentsOfFile:path];

NSLog(@"string:%@",string);

[string release];

/*----------------------写字符串到文件:writeToFile方法------------------------------*/    

NSString *string = [[NSString alloc] initWithString:@"This is a String!"];

NSLog(@"string:%@",string);

NSString *path = @"string.text";   

 [string writeToFile: path atomically: YES];

[string release];    

/*--------------------------------比较两个字符串----------------------------------*/       

 //用C比较:strcmp函数char string1[] = "string!";

char string2[] = "string!";

if(strcmp(string1, string2) = = 0)

{

   NSLog(@"1");

}


//isEqualToString方法   

比较字符串是否完全相等,大小写不一样也无法完全匹配 

NSString *string01 = @"This is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 isEqualToString:string02];

NSLog(@"result:%d",result);


//compare方法(comparer返回的三种值) 逐个字符进行比较:

//compare:options;带选项的比较字符串 

 NSString *string01 = @"This is a String!";

NSString *string02 = @"This is a String!";   

 BOOL result = [string01 compare:string02] = = NSOrderedSame;   

 NSLog(@"result:%d",result);   


 //NSOrderedSame判断两者内容是否相同

NSString *string01 = @"This is a String!";

NSString *string02 = @"this is a String!";

BOOL result = [string01 compare:string02] = = NSOrderedAscending;   

 NSLog(@"result:%d",result);


//NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,string02大于string01为真)

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 compare:string02] == NSOrderedDescending;    

NSLog(@"result:%d",result);   

 

 //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,string02小于string01为真)

//不考虑大小写比较字符串1

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 caseInsensitiveCompare:string02] == NSOrderedSame;   

 NSLog(@"result:%d",result);    

 //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,string02小于string01为真)


//不考虑大小写比较字符串2

NSString *string01 = @"this is a String!";

NSString *string02 = @"This is a String!";

BOOL result = [string01 compare:string02options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;   

 NSLog(@"result:%d",result);     

//NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。

/*----------------------------------改变字符串的大小写-----------------------------*/      

NSString *string2 = @"string";

    //设置字符串首字母大写

    NSLog(@"string2首字母大写:%@",[string2 capitalizedString]);

    //设置字符串全部内容为大写

   
    
NSLog(@"string1大写:%@",[string2 uppercaseString]);

    //设置字符全部内容为小写

    
    
NSLog(@"string2小写:%@",[string2 lowercaseString]);

/*-----------------------------在串中搜索子串-------------------------------------*/       

 NSString *string1 = @"This is a string";

 NSString *string2 = @"string";

 NSRange range = [string1 rangeOfString:string2];

int location = range.location;

int length = range.length;

NSString *string = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i, length:%i",location, length]];

NSLog(@"string:%@",string);

[string release];

/*-----------------------------------抽取子串 ---------------------------------*/        

//-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringToIndex:3];

NSLog(@"string2:%@",string2);

//-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringFromIndex:3];

NSLog(@"string2:%@",string2);

//-substringWithRange: 

//按照所给出的位置,长度,任意地从字符串中截取子串

NSString *string1 = @"This is a string";

NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];

NSLog(@"string2:%@",string2);

NSRange:用来表示相关事物的范围,定义于 NSRange.h。通常是字符串里的字符范围或者数组里的元素范围。

typedef struct _NSRange

   NSUInteger location;

   NSUInteger length;


 }

创建方法:

直接给字段赋值:

NSRange r;

r.location =4;

r.length = 2;

或者,应用C语言的聚合结构赋值机制:

NSRange range = (4,2);


或者,适用Cocoa提供的函数NSMakeRange();

NSRange range = NSMakeRange(4,2);

使用NSMakeRange函数的好处是你可以在任何能够使用函数的地方使用它。


NSRange r;

r.location =4;

r.length = 2;

NSString *sub3 = [string substringWithRange:r];

NSLog(@"%@",sub3);

//扩展路径NSString *Path = @"~/NSData.txt";

NSString *absolutePath = [Path stringByExpandingTildeInPath];

NSLog(@"absolutePath:%@",absolutePath);

NSLog(@"Path:%@",[absolutePath stringByAbbreviatingWithTildeInPath]);

//文件扩展名NSString *Path = @"~/NSData.txt";

NSLog(@"Extension:%@",[Path pathExtension]);

/**********************************************NSMutableString****************************************************/   

 NSString是不可变的,一旦NSString被创建,就不能改变它。可以用它来生成新的字符串,查找字符串或将它其他字符串比较,但不能以删除字符或者添加字符的方式来改变它。

如果想改变字符串,请使用NSString的子类NSMutableString。


NSString类似Java中的String,NSMutableString类似与Java中的StringBuffer。


/*-----------------------------------给字符串分配容量-----------------------------------*/

示例代码:

NSMutableString *string;//声明变量

string=[NSMutableString stringWithCapacity:40];//初始化变量大小

这个capacity只是给NSMutableString的一个建议,字符串的大小并不限制与所提供的capacity,这个capacity只是个最优值。

[string appendString:@"hello,world"];//变量的初始值

[string appendFormat:@",%d",100];//字符串追加

NSLog(@"%@",string);//输出

NSRange range;//定义范围变量

range=[string rangeOfString:@"world"];//查找"world"在string中的位置

[string deleteCharactersInRange:range];//删除range范围字符串

NSLog(@"%@",string);


/*-----------------------------在已有字符串后面添加字符-------------------------------*/   

 //appendString: and appendFormat: NSMutableString *string1 = [[NSMutableString allocinitWithString:@"This is a NSMutableString"];

 [string1 appendString:@", I will be adding some character"];

 [string1 appendFormat:[NSString stringWithFormat:@", I will be adding some character"]];
 
NSLog(@"string1 = %@",string1);


  //两个字符串连接

 NSString *string1 =@"MAC OS Pro";

 NSString *string2 =@"Leopard";

 NSString *string3 = [string1 stringByAppendingString:string2];

 NSLog(string3,nil);

 NSString *string4 = [string1 stringByAppendingFormat:@"%d",10];

 NSLog(string4,nil);



NSMutableString *myString = [NSMutableStringstringWithString:@"Hello World."];

[myString appendFormat:@"The results are %@ now.",@"in"];

NSLog(@"%@", myString);

/*--------------在已有字符串中按照所给出范围和长度删除字符---------------------*/     

//删除字符串

 NSMutableString *string7 = [[NSMutableString alloc]initWithString:@"This is a NSMutableString"];

[string7 deleteCharactersInRange:NSMakeRange(0,2)];

  NSLog(string7,nil);


/*----------------在已有字符串后面在所指定的位置中插入给出的字符串-------------*/

//插入字符串

 NSMutableString *string6 = [NSMutableString stringWithFormat:@"Mac X"];

[string6 insertString:@"OS"atIndex:4];

 NSLog(string6,nil);


/*--------将已有的字符串换成其它的字符串------*/

//-setString:

NSMutableString *String1 = [[NSMutableString alloc] initWithString:@"This is a NSMutableString"];

[String1 setString:@"Hello Word!"];

NSLog(@"String1:%@",String1);


/*--------按照所给出的范围,和字符串替换的原有的字符 ------*/  

    NSString *str0 = @"my name is lijun";

    

   NSString *temp =@"is";

    

   NSRange rang = [str0 rangeOfString:temp];

    

    NSLog(@"搜索的字符串在str0中起始点的index %d",rang.location);

   NSLog(@"搜索的字符串在str0中结束点的index %d",rang.location + rang.length);

    

    //将搜索中的字符串替换成为一个新的字符串

    NSString *str = [str0 stringByReplacingCharactersInRange:rangwithString:@"居前"];

    NSLog(@"替换后字符串为%@",str);

    

    //将字符串中" "全部替换成 *

    str = [str0 stringByReplacingOccurrencesOfString:@" " withString:@"&"];

    NSLog(@"替换后字符串为%@",str);


/*----------------------------------- 搜索与替换字符串 --------------------------------*/


    NSMutableString *string = [[NSMutableString alloc]initWithString:@"This is a NSMutableString"];

   NSRange searchRange = [string rangeOfString:@"This"];

   if  (searchRange.location !=NSNotFound)

    {

         NSLog(@"location = %d, length = %d",searchRange.location,searchRange.length);

    }

/*-----------------------------将字符串转换为数组---------------------------------------*/


NSString  *string =@"One,Two,Three,Four,Five,Five,Six,Seven";

   NSArray  *wordArray = [string componentsSeparatedByString:@","];

    NSLog(@"%@", wordArray);


/*-----------------------判断字符串内是否还包含别的字符串(前缀,后缀)--------------------*/

//01:检查字符串是否以另一个字符串开头- (BOOL) hasPrefix: (NSString *) string; 

 NSString *string0 = @"NSStringInformation.txt";
 [string0 hasPrefix:@"NSString"
] ==1 ?  NSLog(@"YES") : NSLog(@"NO");
 [string0 hasSuffix:@".txt"
] ==1 ?  NSLog(@"YES") : NSLog(@"NO");

NSString *s1 = @"hello World";

 NSString *s2 =@"hello Mom";

 NSLog(@"%@ %@ %@", s1,[s1 isEqualToString:s2]?@"equals" :@"differs from",s2);

NSLog(@"%@ %@ %@", s1,[s1 hasPrefix:@"Hello"]?@"starts with" :@"does not start with",@"Hello");

NSLog(@"%@ %@ %@", s1,[s1 hasSuffix:@"Hello"]?@"ends with" :@"does not end with",@"Hello");

//02:查找字符串某处是否包含其它字符串 - (NSRange) rangeOfString: (NSString *) string,这一点前面在串中搜索子串用到过;


   NSRange range;

    range = [string5rangeOfString:@"Mac OS"];

   if (range.location !=NSNotFound

    {

        //得到字符串的位置和长度

       NSLog(@"%d %d",range.length,range.location);

    }

   else 

    {

       NSLog(@"没有发现");

    }



/*---------------------------------从字符串提取数字 -----------------------------------*/

使用一个值方法可将字符串转换成数字

NSString  *s3 =@"3.141592";

NSLog(@"%d", [s3 intValue]);

NSLog(@"%d", [s3 boolValue]);

NSLog(@"%f", [s3 floatValue]);

NSLog(@"%f", [s3 doubleValue]);

【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值