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:@"'"];

或者

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

方法三、使用 stringByAppendingFormat

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

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

甚至还想到用宏。

#define _SQL(x)  #x
#define SQL(x)   _SQL(x)

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

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

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

// 拼接字符串
+ (NSString*)NStr:(NSString*) str,...
{
    if (!str) {
        return nil;
    }
    NSMutableString *ret = [NSMutableString stringWithFormat:@"%@",str];
    id          obj = nil;
    va_list     args;
    va_start(args, str);
    
    while ((obj = va_arg(args, id))) {
        if ([obj isKindOfClass:[NSString class]]) {
            [ret appendString:obj];
        } else {
            NSLog(@"<NStr>:WARNING %@ is not a NSString", [obj class]);
        }
    }
    va_end(args);
    return ret;
}
// 使用
[类名 NStr:@"select * from ",tableName,@" where id='",id,@"'",nil];

虽然可以拼接字符串了,但是看着还是不怎么直观。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值