当前位置:   article > 正文

IOS字符串拼接方法小结_ios 字符串拼接

ios 字符串拼接

在编程过程中很多时候需要拼接字符串。在使用FMDB管理sqlite数据库,手写的SQL语句总是要拼接字符串。

各种语言有不同的字符串拼接方式,java 、c++等语言字符串拼接最为简单,直接使用“+”就搞定了。例如"select * from " + tablename + "where id=" + id 但是使用OC恶心的语法写出的代码也非常恶心。下面总结下

方法一、使用 stringWithFormat 格式化字符串

NSString*sql = [NSString stringWithFormat:"select * from %@ where id='%@'",tablename,id];


方法二、使用 stringByAppendingString

NSString*sql = [[[[@"select * from " stringByAppendingString:tablename] stringByAppendingString:@"where id='"]stringByAppendingString:id]stringByAppendingString:@"'"];

或者

  1. NSString*sql = [@"select * from " stringByAppendingString:tablename];
  2. sql = [sql stringByAppendingString:@"where id='"];
  3. sql = [sql stringByAppendingString:id];
  4. sql = [sql stringByAppendingString:@"'"];

方法三、使用 stringByAppendingFormat

这个是把方法一和方法二结合结合起来的一个方法。

一直想找个好的方法,既直观又方便。

甚至还想到用宏。

  1. #define _SQL(x) #x
  2. #define SQL(x) _SQL(x)

可惜所有的表名、字段名都要定义为宏,且NULL值不好处理。

最后想到使用不定长参数来拼接字符串,将上面的方法封装起来。

方法四、+ (NSString*)NStr:(NSString*) str,...

  1. // 拼接字符串
  2. + (NSString*)NStr:(NSString*) str,...
  3. {
  4. if (!str) {
  5. return nil;
  6. }
  7. NSMutableString *ret = [NSMutableString stringWithFormat:@"%@",str];
  8. id obj = nil;
  9. va_list args;
  10. va_start(args, str);
  11. while ((obj = va_arg(args, id))) {
  12. if ([obj isKindOfClass:[NSString class]]) {
  13. [ret appendString:obj];
  14. } else {
  15. NSLog(@"<NStr>:WARNING %@ is not a NSString", [obj class]);
  16. }
  17. }
  18. va_end(args);
  19. return ret;
  20. }
  21. // 使用
  22. [类名 NStr:@"select * from ",tableName,@" where id='",id,@"'",nil];

虽然可以拼接字符串了,但是看着还是不怎么直观。
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号