NSString的各种处理

Published 2025-03-24 21:13 1242 words 7 min read

前端项目通过bridge获取客户端资源,客户端直接返回response对象常用代码模板1——基础算法常用代码模板2——数据结构统计iOS工程代码行数高数概念、公式、定理Objective-C 语法 3Objective-C 语法 2Objective-C 语法 1UIViewController 的生命周期UITableview调用reload方法时抖动问题UILabel中文带行间距的处理,限制行数,计算高度等UIButton扩大点击范围以及关于响应者链条的思考UIApplicationSwiftUI基本控件iPhone6 Plus上面神秘的缝隙iPhone 刘海机型UI适配(X、Xs、Xs Max、Xr)iOS:如何在UITableView调用reloadData刷新结束后再同步执行后续操作iOS 截取整个 scrollview 图片iOS 关于 UITextField 的字数限制Objective-C 中禁止调用指定的方法objc源码分析-runtime-classObjective-C Type EncodingsObjective-C:为什么分类中不能直接添加属性OC优缺点以及常见bugruntime——运行时简单使用当对象接收到不能处理的消息时调用的方法浅谈iOS中的weak为 UIControl 实现线程安全的 Block 事件扩展:原理与实践OC单例宏iOS常用数据类型转换OC中nil 、NULL、 Nil 、NSNull的区别Description方法和NSLog函数Block in Objective-CiOS自动化埋点的实现iOS平台编译Ogre游戏引擎库iOS:特殊符号大全iOS 网络小结iOS 沙盒与 BundleiOS 框架学习-AsyncSocketNSString的各种处理Swift Module 如何被全局引用CocoaPods组件化——OC/Swift动静态库混用COCOAPODS技巧-创建私有仓库关于NSNotificationCenter数据结构与算法解析习题2.23数据结构与算法解析习题2.19数据结构与算法解析习题2.16数据结构与算法解析习题2.14数据结构与算法解析习题2.13数据结构与算法解析习题2.12数据结构与算法解析习题2.11:二分查找数据结构与算法解析习题2.10:霍纳法则(Horner's rule)数据结构与算法解析习题2.7数据结构与算法解析习题1.3数据结构与算法解析习题1.2数据结构与算法解析习题1.1LeetCode 486 Predict the Winner(预测赢家)LeetCode 398 随机数索引LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal(由中序和后序遍历建立二叉树)LeetCode 70 爬楼梯(青蛙跳台阶)LeetCode 8 String to Integer (atoi)LeetCode 6 ZigZag Conversion(Z字转换)LeetCode 5 Longest Palindromic Substring(最长回文字串)iOS脚本打包 ipa(.app转.ipa)《什么是数学 》习题 第一章 补充《什么是数学 》习题 第一章 2 数系的无限性 数学归纳法《什么是数学 》习题 第一章 1 整数的计算Vue 的一些指令和缩写
This post is not yet available in English. Showing the original.
程序员经常操作的事情估计就是字符串的各种处理了,这篇说一下OC中常用的字符串操作 1.NSString的大小处理 NSString *string = @"ankang"; NSLog(@"全部变成大写%@", [string uppercaseString]); ///

程序员经常操作的事情估计就是字符串的各种处理了,这篇说一下OC中常用的字符串操作:

1.NSString的大小处理

    NSString *string = @"ankang";
    NSLog(@"全部变成大写%@", [string uppercaseString]);
    /// 打印结果
    2016-06-17 16:02:04.925 test[44498:11175521] 全部变成大写ANKANG


    NSString *string = @"ANKANG";
    NSLog(@"全部变成小写%@", [string lowercaseString]);
    /// 打印结果
    2016-06-17 16:03:15.404 test[44536:11183707] 全部变成小写ankang


    NSString *string = @"anKang";
    NSLog(@"首字母变大写其他小写,%@", [string capitalizedString]);
    /// 打印结果
    2016-06-17 16:05:29.253 test[44618:11206406] 首字母变大写其他小写Ankang

2.NSString的比较

    NSString *string = @"anKang";
    /// 两个字符串相同返回YES,否则返回NO
    BOOL isEqual = [string isEqualToString:@"anKang"];
    NSLog(@"%@", isEqual ? @"相同" : @"不相同");
    /// 打印结果
    2016-06-17 16:12:19.362 test[44705:11240391] 相同


    NSString *string1 = @"ankang";
    NSString *strign2 = @"LIMING";

    /// 比较两个字符串内容的大小:逐个字符进行ASCII值
    NSComparisonResult result = [string1 compare:strign2];

    // 小技巧:写switch语句选择枚举的时候,最好不写default,这样编辑器会提醒你缺少的枚举条件
    switch (result) {
        case NSOrderedAscending:
            NSLog(@"左边小");
            break;
        case NSOrderedSame:
            NSLog(@"相等");
            break;
        case NSOrderedDescending:
            NSLog(@"左边大");
            break;
    }
        /// 忽略大小写的比较
    NSComparisonResult resultNew = [string1 caseInsensitiveCompare:strign2];

    switch (resultNew) {
        case NSOrderedAscending:
            NSLog(@"左边小");
            break;
        case NSOrderedSame:
            NSLog(@"相等");
            break;
        case NSOrderedDescending:
            NSLog(@"左边大");
            break;
    }
    /// 打印结果
    2016-06-17 17:46:23.602 test[45178:11436673] 左边大
    2016-06-17 17:46:23.603 test[45178:11436673] 左边小

3.NSString 的搜索

    NSString *string = @"我是中国人";
    BOOL isHasPre = [string hasPrefix:@"我是"];
    NSLog(@"%@", isHasPre ? @"我是中国人以\"我是\"开头" : @"我是中国人不以\"我是\"开头");

    BOOL ishasSuf = [string hasSuffix:@"中国人"];
    NSLog(@"%@", ishasSuf ? @"我是中国人以\"中国人\"结尾" : @"我是中国人不以\"中国人\"结尾");

    /// 检查字符串string是否包含@"中国"
    /// 如果包含就返回@"中国"的范围,如果不包含location和length都是0
    NSRange range = [string rangeOfString:@"中国"];
    NSLog(@"location = %ld, length = %ld", range.location, range.length);

    /// 查出最后一个,的范围,NSBackwardsSearch说明从后往前搜索
    NSRange range = [str rangeOfString:@"," options:NSBackwardsSearch];
    // 删掉最后一个,
    [str deleteCharactersInRange:range];

    /// 打印结果
    2016-06-17 15:53:28.917 test[44433:11111312] 我是中国人以"我是"开头
    2016-06-17 15:53:28.917 test[44433:11111312] 我是中国人以"中国人"结尾
    2016-06-17 15:53:28.917 test[44433:11111312] location = 2, length = 2

4.SString的截取和替换

    NSString *string = @"我爱北京天安门";
    NSLog(@"从指定位置到尾部,包括指定位置的字符 --- %@", [string substringFromIndex:4]);
    NSLog(@"从开始到指定位置,不包括指定位置的字符 --- %@", [string substringToIndex:2]);
    NSLog(@"按照Range截取字符串 --- %@", [string substringWithRange:NSMakeRange(2, 2)]);
    NSLog(@"把第一个字符串的替换成第二个字符串 --- %@", [string stringByReplacingOccurrencesOfString:@"天安门" withString:@"圆明园"]);
    /// 打印结果
    2016-06-17 18:16:16.245 test[45518:11600896] 从指定位置到尾部,包括指定位置的字符 --- 天安门
    2016-06-17 18:16:16.246 test[45518:11600896] 从开始到指定位置,不包括指定位置的字符 --- 我爱
    2016-06-17 18:16:16.246 test[45518:11600896] 按照Range截取字符串 --- 北京
    2016-06-17 18:16:16.246 test[45518:11600896] 把第一个字符串的替换成第二个字符串 --- 我爱北京圆明园

5.NSString与路径

    NSString *string = @"/Users/ankang/Desktop/test";

    NSLog(@"%@", [string isAbsolutePath] ? @"是绝对路径" : @"不是绝对路径");
    NSLog(@"获取最后一个目录 --- %@", [string lastPathComponent]);
    NSLog(@"删除最后一个目录 --- %@", [string stringByDeletingLastPathComponent]);
    NSLog(@"在路径后面拼接一个目录 --- %@", [string stringByAppendingPathComponent:@"hehe"]);
    NSLog(@"在路径后面拼接目录字符串 --- %@", [string stringByAppendingString:@"/hehe"]);
    /// 打印结果
    2016-06-17 18:24:10.524 test[45720:11654574] 是绝对路径
    2016-06-17 18:24:10.525 test[45720:11654574] 获取最后一个目录 --- test
    2016-06-17 18:24:10.525 test[45720:11654574] 删除最后一个目录 --- /Users/ankang/Desktop
    2016-06-17 18:24:10.525 test[45720:11654574] 在路径后面拼接一个目录 --- /Users/ankang/Desktop/test/hehe
    2016-06-17 18:24:10.525 test[45720:11654574] 在路径后面拼接目录字符串 --- /Users/ankang/Desktop/test/hehe

6.NSString与文件扩展名

    NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";

    NSLog(@"获得扩展名%@", [string pathExtension]);
    NSLog(@"删除尾部扩展名%@", [string stringByDeletingPathExtension]);
    NSLog(@"在尾部添加扩展名%@", [@"/Users/ankang/Desktop/test/test" stringByAppendingPathExtension: @"txt"]);
    /// 打印结果
    2016-06-17 18:30:46.478 test[45859:11696844] 获得扩展名xcodeproj
    2016-06-17 18:30:46.479 test[45859:11696844] 删除尾部扩展名/Users/ankang/Desktop/test/test
    2016-06-17 18:30:46.479 test[45859:11696844] 在尾部添加扩展名/Users/ankang/Desktop/test/test.txt

7.NSString的其他用法

    NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";

    NSLog(@"字符串长度:%ld", string.length);
    NSLog(@"返回字符串index对应的字符:%c", [string characterAtIndex:3]);
    NSLog(@"%f", [@"23231345" doubleValue]);  /// 严格上说 打印double类型的必须用%f占位符
    NSLog(@"%f", [@"23231345" floatValue]);
    NSLog(@"%d", [@"23231345" intValue]);
    NSLog(@"%ld", [@"23231345" integerValue]);
    NSLog(@"转换成C语言字符串:%s", [@"ankang" UTF8String]);
    /// 打印结果
    2016-06-17 18:42:22.333 test[46275:11782216] 字符串长度:41
    2016-06-17 18:42:22.333 test[46275:11782216] 返回字符串index对应的字符:e
    2016-06-17 18:42:22.334 test[46275:11782216] 23231345.000000
    2016-06-17 18:42:22.334 test[46275:11782216] 23231344.000000
    2016-06-17 18:42:22.334 test[46275:11782216] 23231345
    2016-06-17 18:42:22.334 test[46275:11782216] 23231345
    2016-06-17 18:42:22.334 test[46275:11782216] 转换成C语言字符串:ankang

8.NSString去除空

    NSString *string = @"你 是  不   是 咸  鱼";
    NSLog(@"去除所有空格:%@", [string stringByReplacingOccurrencesOfString:@" " withString:@""]);

    NSString *string1 = @"   你是不是咸鱼 ";
    NSLog(@"去除首尾空格:%@", [string1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]);

    /// 打印结果
    2016-06-17 18:46:36.301 test[46368:11815010] 去除所有空格:你是不是咸鱼
    2016-06-17 18:46:36.302 test[46368:11815010] 去除首尾空格:你是不是咸鱼

9.NSString分割

    NSString *string = @"/Users/ankang/Desktop/test/test.xcodeproj";
    // 对路径里传入的字符串根据/进行分割然后放入数组中
    NSArray *stringArray =[string componentsSeparatedByString:@"/"];
    NSLog(@"%@", stringArray);

    /// 打印结果,注意第一个空字符串
    2016-06-17 18:48:43.397 test[46424:11830584] (
        "",
        Users,
        ankang,
        Desktop,
        test,
        "test.xcodeproj"
    )
© 2024 - 2026 cos @cosine
Powered by theme astro-koharu · Inspired by Shoka