NSString *str1 = @"字符串1";
NSString *str2 = @"字符串2";
//在同样条件下,Objective的字符串拼接 往往只有用 系统方法/格式化 //way 1 格式化
NSString *fullStr = [NSString stringWithFormat:@"%@%@",str1,str2];
//way 2 使用方法追加
NSString *fullStr = [str1 stringByAppendingString:str2];

但有没有发现,无论是用哪种方法拼接,都是一串长长的代码,远远不及swift(不只是swift,还有其他语言也还是)的灵活性

    //这是swift的
let str1 = "aaa"
let str2 = "bbb"
let fullStr = str1 + str2

有没有办法可以把Objective-C的字符串拼接更加简洁呢?

用链式语法是可以的

首先新建一个category,我们要给NSString加入一个get方法

链式语法就是用block来传入参数并执行相关操作,具体原理就不说了

在category中的interface加入一个property

@property (nonatomic,readonly) NSString *(^add)(NSString* str);

这里我们只需要做readonly(没有set方法)

实现方法

- (NSString *(^)(NSString *))add{
return ^(NSString *str){
return [self stringByAppendingString:str];
};
}

那么我拼接只需要

    NSString *str1 = @"字符串1";
NSString *str2 = @"字符串2";
NSString *fullStr = str1.add(str2);

即可

Objective的字符串拼接 似乎没有Swift方便,但也可以制做一些较为方便的写法的更多相关文章

  1. SQL中字符串拼接

    1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select '123'+'456' ...

  2. StringBuilder(字符串拼接类)

    StringBuilder是在using System.Text命名空间下的一个成员. 在做字符串拼接的时候,因为字符串是引用类型,新的字符串是会再内存中创建的,所以用+号拼接字符串是比较耗效率的. ...

  3. 精简版StringBuilder,提速字符串拼接

    编写目的 在频繁的字符串拼接中,为了提升程序的性能,我们往往会用StringBuilder代替String+=String这样的操作; 而我在实际编码中发现,大部分情况下我用到的只是StringBui ...

  4. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  5. Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次

    [请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...

  6. 【SQL】小心字符串拼接导致长度爆表

    请看代码: DECLARE @max VARCHAR(max) SET @max='aaa...' --这里有8000个a +'bb' --连接一个varchar常量或变量 SELECT LEN(@m ...

  7. WMSYS.WM_CONCAT(distinct(字段名)) 函数,字符串拼接函数。合并列

    合并列函数 WMSYS.WM_CONCAT(distinct(字段名)) 函数 可以实现字符串拼接在一起,这种情况可以在要求把一个字段的多个值拼接在一起的时候使用.其中distinct可以去掉重复的值 ...

  8. 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接

    长久以来,我们被教导字符串的连接最好用StringBuffer.StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence.StringBuf ...

  9. vs2015发现一个字符串拼接 bug

    VS2015支持 字符串拼接 如下: string user="test"; int password=123; string sql=$" user={user};pa ...

随机推荐

  1. 及时取消代码中的AsyncTask

    在一个Activity页面,如果发起了AsyncTask任务,然后页面离开/销毁了,此时如果doInBackground没执行完,会有两个问题: 1, AsyncTask白白消耗资源,结果已经用不上了 ...

  2. css的用法

    Css(Cascading Style Sheets,层叠样式表)是一种页面美化方法,通过编辑Css的对象属性达到美化页面的效果.Css的操作基本单元为对象,使用CSS的感觉就像是使用C++/C中的函 ...

  3. iOS 4种开发者身份的官方说明

    https://developer.apple.com/support/compare-memberships/cn/ 为了防止链接失效,截图如下:

  4. nginx实现本地图片生成缩略图

    nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x ...

  5. EXPORT_SYMBOL的使用

    转自:http://blog.csdn.net/cailiwei712/article/details/7998525 在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL ...

  6. MongoDB的导入导出(7)

    导入/导出可以操作的是本地的mongodb服务器,也可以是远程的. 所以,都有如下通用选项: -h host   主机 --port port    端口 -u username 用户名 -p pas ...

  7. 《图形学》实验七:中点Bresenham算法画椭圆

    开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 50 ...

  8. [MongoDB]MongoDB与JAVA结合使用CRUD

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  9. 个人对Java中多态的一些简单理解

    什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...

  10. Timer计时器

    private Timer timer; timer.schedule(new TimerTask() { @Override public void run() { if (isStopedReco ...