iOS compare字符串的比较

NSString对象的创建和比较 我们讨论了NSString对象的初始化方法,包括使用字符串字面量、initWithFormat:方法和initWithString:方法。我们还介绍了几种常见的字符串比较方法,包括isEqualToString:方法、compare:方法和caseInsensitiveCompare:方法。该方法接受一个格式化字符串和一些参数,并返回一个格式化后的字符串对象。上述代码中,我们使用compare:方法比较了两个字符串的顺序。上述代码中,我们使用isEqualToString:方法比较了两个字符串的内容。 阅读详情

(每天最重要的事情是什么?(上班)还有比它更重要的事情么?(有!  加班))偷笑


字符串,这里总结一些方法案例:

一、compare:


(判断两对象值的大小,按字母顺序进行比较)

 NSString *string = @"9.1.1";

[string compare:@"9.1.1"];返回的类型是NSComparisonResult 的NSOrderedSame(= 等于)

[string compare:@"9.2.1"];返回的是NSOrderedAscending (后面一个字符串大于前面一个 升序)

[string compare:@"9.0.1"];返回的是NSOrderedDescending (后面一个字符串小于前面一个 降序)


在系统内部的样式

typedef NS_ENUM(NSInteger, NSComparisonResult) 

{

NSOrderedAscending = -1L,

 NSOrderedSame,

 NSOrderedDescending

};

一般情况下我们可以使用这个来进行版本号的对比:

例子

    NSString *num1 = @"5.2.0";
    NSString *num2 = @"5.3.0";
 
    if ([num1 compare:num2 options:NSNumericSearch] == NSOrderedDescending)
    {
        ULog(@"%@ is bigger",num1);
    }else
    {
        ULog(@"%@ is bigger",num2);
    }

解释:

NSOrderedDescending是降序,如果numb1>numb2用这个函数相比较那么就等于降序。

字符串的比对结果NSComparisonResult(在NSObjCRunTime.h中定义)是按照字符的ASCII值进行比对的

    NSString * str1 = @"abc";

    NSString * str2 = @"abd";

    NSString * str3 = @"ABC";

    NSString * str4 = @"abc";

    NSString * str5 = @"123";

那么,

    [str1 compare:str2] == NSOrderedAscending;//(升序)

    [str2 compare:str1] == NSOrderedDescending;//(降序)

    [str1 compare:str3] == NSOrderedDescending;//(降序)

    [str1 compare:str4] == NSOrderedSame;//(同序)

    [str1 compare:str5] == NSOrderedDescending;//(降序)

(compare的比对含义:左比右 左侧的数值小于(等于或者大于)右侧的值,即compare的目标值(右边的值)相比于参数值(左边的值)在字母表中的排序位置更靠后(相同或者靠前))

(出现问题:


原因:是由于字符串他的比对是逐位从左到右的比对的,9是比1大的。所以出现上面的问题。

同样:


它的比对成功也是由于@"90.0.1"的第二位0在ASCII表中的位置在.之后。是错误的比对误造成正确的@"90.0.1"大于@"9.0.1"的样子。

同样,对于字符串长度的不一致的


添加option值(改为:)

NSComparisonResult result = [string2 compare:string options:NSNumericSearch];

能够使字符串的比对添加选项option,针对数字进行比较。解决上面数据的根据字符从左至右依次比对出现的问题:


扩展:

在c语言中(摘自:https://blog.youkuaiyun.com/ctrl_qun/article/details/66970652)

#include <stdio.h>
#include <string.h>
int main(void)
{
    char str_1[] = "abc"; 
    char str_2[] = "abc";
    char str_3[] = "ABC";
    if (strcmp(str_1, str_2) == 0)
        printf("str_1 is equal to str_2. \n");
    else
        printf("str_1 is not equal to str_2. \n");
    if (strcmp(str_1, str_3) == 0)
        printf("str_1 is equal to str_3.\n");
    else
        printf("str_1 is not equal to str_3.\n");
    return 0;
}
上例的打印输出如下所示:   

strcmp()函数有两个参数,即要比较的两个字符串。strcmp()函数对两个字符串进行大小写敏感的(case-sensitiVe)和字典式的(lexicographic)比较,并返回下列值之一:
----------------------------------------------------
    返  回  值         意  义
----------------------------------------------------
    <0               第一个字符串小于第二个字符串
     0               两个字符串相等    ·
    >0               第一个字符串大于第二个字符串
----------------------------------------------------

在上例中,当比较str_1(即“abc”)和str_2(即“abc”)时,strcmp()函数的返回值为0。然而,当比较str_1(即"abc")和str_3(即"ABC")时,strcmp()函数返回一个大于0的值,因为按ASCII顺序字符串“ABC”小于“abc”。

strcmp()函数有许多变体,它们的基本功能是相同的,都是比较两个字符串,但其它地方稍有差别。下表列出了C语言提供的与strcmp()函数类似的一些函数:   
-----------------------------------------------------------------
    函  数  名                   作  用
-----------------------------------------------------------------
    strcmp()         对两个字符串进行大小写敏感的比较
    strcmpi()        对两个字符串进行大小写不敏感的比较
    stricmp()        同strcmpi()
    strncmp()        对两个字符串的一部分进行大小写敏感的比较
    strnicmp()       对两个字符串的一部分进行大小写不敏感的比较
-----------------------------------------------------------------
在前面的例子中,如果用strcmpi()函数代替strcmp()函数,则程序将认为字符串“ABC”等于“abc”。


二、[ compare:(NSString *) options:(NSStringCompareOptions)];

传入 NSStringCompareOptions 枚举的值

enum{

   NSCaseInsensitiveSearch = 1,//不区分大小写比较

    NSLiteralSearch = 2,//区分大小写比较

    NSBackwardsSearch = 4,//从字符串末尾开始搜索

    NSAnchoredSearch = 8,//搜索限制范围的字符串

    NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt

//以下定义高于 mac os 10.5 或者高于 iphone 2.0 可用

    NSDiacriticInsensitiveSearch = 128,//忽略 "-" 符号的比较

    NSWidthInsensitiveSearch = 256,//忽略字符串的长度,比较出结果

    NSForcedOrderingSearch = 512//忽略不区分大小写比较的选项,并强制返回 NSOrderedAscending 或者 NSOrderedDescending

//以下定义高于 iphone 3.2 可用

    NSRegularExpressionSearch = 1024//只能应用于 rangeOfString:..., stringByReplacingOccurrencesOfString:...和 replaceOccurrencesOfString:... 方法。使用通用兼容的比较方法,如果设置此项,可以去掉 NSCaseInsensitiveSearch 和 NSAnchoredSearch

}


(可以多个条件一起约束

例如:

BOOL result = [astring01 compare:astring02
 
options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame;    //NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。
)


三、[ compare:(NSString *) options:(NSStringCompareOptions) range:(NSRange)];

range:(NSRange)

比较字符串的范围

 结构变量:

typedef struct _NSRange {

    NSUInteger location;  //需要比较的字串起始位置(以0为起始)

    NSUInteger length;  //需要比较的字串长度

} NSRange;


NSRange的使用:

    NSRange range1 = {2,4};

    NSRange range4 = NSMakeRange(2, 5); 

 //截取字符串

    NSString *homebrew = @"cushy yigexinshuju caicaikan";

    

    NSLog(@"%@", [homebrew substringWithRange:range1]);

    NSLog(@"%@", [homebrew substringWithRange:range4]);

    //查找字符串

    NSRange range2 = [homebrew rangeOfString: @"cai"];

    NSLog(@"range:%@", NSStringFromRange(range2));

    NSRange range3 = [homebrew rangeOfString:@"xinshu"];

    NSLog(@"range:%@", NSStringFromRange(range3));

    //反向查找字符串的位置

    NSRange range5 = [homebrew rangeOfString:@"ju"];

    NSLog(@"%@", NSStringFromRange(range5));

    NSRange range6 = [homebrew rangeOfString:@"ju" options: NSBackwardsSearch];

    NSLog(@"%@", NSStringFromRange(range6));


四、改变字符串的大小写   

    NSString *string1 = @"A String";

    NSString *string2 = @"String";

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

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

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




代谢组+微生物组联合分析实战:从样本处理到生物标志物筛选的完整流程 本文详细介绍了代谢组与微生物组联合分析的全流程,从样本采集、处理到生物标志物筛选的科学实践。重点解析了样本类型匹配、共提取技术、质控协同监控及多维度关联分析方法,帮助研究者系统掌握这一前沿技术,为疾病机制研究和精准医疗提供新视角。 阅读详情

相关推荐

AIGC内容溯源技术:如何追踪AI生成内容的原始来源

本文旨在系统性地介绍AIGC内容溯源的技术体系,帮助读者理解如何追踪AI生成内容的来源。我们将覆盖从基础概念到前沿技术的完整知识链,包括但不限于数字水印、区块链存证、内容指纹等技术方案。文章将从AIGC的基本概念出发,逐步深入探讨各种溯源技术,分析其原理和实现,最后讨论实际应用和未来趋势。AIGC:AI Generated Content,人工智能生成内容内容溯源:追踪数字内容的创作、修改和传播历史数字水印:嵌入在数字内容中的不可见识别信息数字水印:隐藏在内容中的识别信息,像隐形墨水内容指纹。

SuperAGI2025 2070

iOS compare字符串的比较相关的使用略微整理

从前,有一个程序员,他得到了一盏神灯。灯神答应实现他一个愿望。然后他向神灯许愿,希望在有生之年能写一个好项目。后来....后来..... 他得到了永生。 关于字符串,这里我总结一些方法案例: 一、compare: (判断两对象值的大小,按字母顺序进行比较) NSString*string =@"9.1.1"; [stringcompare:@"9.1.1"];返回的类型是NSComparisonResult 的NSOrderedSame(= 等于) ...

qq_20350847的博客 660

MIPI CSI-2 协议解析

CSI-2标准协议前言一、Overview of CSI-2二、CSI-2 layer Definitions三、 Camera Control Interface(CCI)3.1 数据传输协议(Data Transfer Protocol)3.1.1 消息类型(Message Type)3.1.2 读写操作(Read/Write Operations)3.1.2.1 随机位置单次读3.1.2.2 当前位置单次读3.1.2.3 随机位置连续读3.1.2.4 当前位置连续读3.1.2.5 随机位置单次写3.1

Lucky 3万+

IOS compare 字符串比较

NSString 比较字符串,我介绍一些常用的方法: NSString *value = @"1234567890"; 比较的方法: [value compare:(NSString *)]; [value compare:(NSString *) options:(NSStringCompareOptions)]; [value compare:(NSString *) options:(NSStringCompareOptions) range:(NSRange)]; 传入的参数: com

s13166803785的博客 555

到底什么是电源的斜波补偿,电源芯片CS引脚作用,一文讲清楚!

上文有提到电流环,其实电流环再细分也有很多模式,用的最多的是峰值电流模式峰值电流模式调节工作原理如下:(1)当输出负载增大时,输出电压降低,因此,Vc 增大,线性增加的电感电流只有升高到更大的值才能使 PWM 电流比较器翻转,开关管导通的时间增长,占空比增加,输入功率增加,因此输出电压增加,当输出电压增加到调节的范围内时,系统保持平衡。

jwgdhuwdhg的博客 1万+

测试dali协议的软件,DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议

DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议深圳聚积智能 夏先生 13246760327 QQ 349098308■IEC62386-102(V2.0)通过测试内容IEC62386-102/2.1/Test preambleIEC62386-102/3.1/Polarity testIEC62386-102/3.2/Maximum and minimum system v...

weixin_35343788的博客 1351

iOS 使用compare 进行对比

compare 是 NSString 中的一个方法,这个方法是将字符串 按照 ACSII码表来进行对比。 NSString *num1 = @"5.2.0"; NSString *num2 = @"5.3.0"; NSInteger a=[num1 compare:num2]; if (a==NSOrderedAscending) { ...

weixin_30394333的博客 236

CTF---Web---文件包含---01

文章目录前言一、题目描述二、解题步骤1.查看源代码2.文件包含(/etc/passwd)3.解码总结 前言 题目分类: CTF—Web—文件包含 一、题目描述 题目:提示寻找passwd文件 二、解题步骤 1.查看源代码 提示所有图片存储路径是download.php?name=img, 此时name参数的存在就提示此题可能为“文件包含”。 2.文件包含(/etc/passwd) 两种查看方式: 2.1、访问view-source:http://192.168.87.180/download.php

qq_22160557的博客 1391

iOS compare用法

今天在看一个bug,原来是之前同事写的代码用compare比较两个字符串,(我对这个compare也是理解有误),看了文档,原来是这样的: /* In the compare: methods, the range argument specifies the subrange, rather than the whole, of the receiver to use in the compa

学如逆水行舟 5530

【ARM Coresight | AMBA BUS | Cache 与 MMU/MPU | CoreLink | GCC | CSH 专栏导读】

1. ARM Coresight(SoC-400/SoC-600) 专栏 2. ARMv8/v9 CPU/Cache 专栏 3. Linux ARM AMBA 总线 专栏 4. Trace32/DS-5 专栏。。。

CodingCos的博客 8241

使用STM32制作智能窗帘控制

以上就是一个简单的基于STM32的智能窗帘控制代码案例。通过感知光线强度和控制步进电机的旋转,我们可以实现智能窗帘的自动开启和关闭。通过定时器的中断来控制步进电机的旋转,从而实现窗帘的开启和关闭动作。最后,我们需要实现主函数和中断函数。在主函数中,我们需要初始化硬件资源,然后进入一个无限循环来不断检测光敏电阻的值,并根据其值来控制窗帘的开启和关闭。接下来,我们需要编写功能函数,用于控制窗帘的开启和关闭。然后,我们需要配置STM32开发环境,并创建一个新的工程。接下来,我们初始化相关的硬件资源。

2401_85258012的博客 276

iOS 字符串的的compare方法

比较app版本号, 决定是否更新 后台存储的版本号1.0.4 当前的版本号 1.0.1 - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; NSString *serverVersion = @"1.0.4"; // 后台存储的版本号 NSString...

风起云涌的博客 719

从HCI层浅析LE Audio通话建立流程

本文分析了BLE AUDIO通话协议建立的全过程。当手机来电时,系统会通过CCP EATT链路通知耳机准备通话,并断开原有音乐CIS连接。随后建立通话专用的CIG组,其参数设置(如MAX SDU SIZE=80、RTN=2)与音乐场景明显不同,更注重通话的实时性。文中详细描述了设置ISO数据路径、启用ASE、建立CIS连接等关键步骤,特别指出通话采用Conversational音频上下文类型。最后解析了ISO数据包参数含义,展示了10ms周期、32kHz采样率等通话特性参数。整个过程体现了BLE AUDIO

十多年蓝牙协议软件开发,擅长蓝牙协议分析 1860

iOS compare字符串比较

例如  1、 NSString *value = @"123AAAAAAA"; [value compare:@"123AAAAAAA"],返回 NSOrderedSame。 2、不区分大小写 NSString *returnstr = @"aaaaaaaa"; NSString *compare:MACstring = @"aAaA

zwl492454828的专栏 1935

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

iOS compare 字符串比较

NSString 比较字符串,我介绍一些常用的方法: NSString *value = @"1234567890"; 比较的方法: [value compare:(NSString *)]; [value compare:(NSString *) options:(NSStringCompareOptions)]; [value compare:(NSString *) ...

weixin_30940783的博客 74

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

html字符串转整型,iOS字符串转整型.htm

iOS字符串转整型iOS字符串转整型style="FONT-SIZE: 14px; FONT-FAMILY: Arial; WHITE-SPACE: normal; WORD-SPACING: 0px; TEXT-TRANSFORM: none; FONT-WEIGHT: normal; COLOR: rgb(0,0,0); PADDING-BOTTOM: 0px; FONT-STYLE: nor...

weixin_26934905的博客 886

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【代码笔记】iOS-两个时间字符串的比较

一,效果图。 二,代码。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self initTimerCompare]; } #pragma -mark -functions ...

weixin_30508309的博客 170

比较两个日期的前后顺序

NSString * deliverydate = dicUrl[@"deliverydate"]; NSString * arrivedate = dicUrl[@"arrivedate"]; if (![self compareDate:deliverydate withDate:arrivedate]) { [sel...

weixin_34392843的博客 774

ios 时间的比较&&获得系统本地时间指定时区

ios 时间的比较&&获得系统本地时间指定时区 - (BOOL)isEqualToDate:(NSDate *)otherDate;   与otherDate比较,相同返回YES   - (NSDate *)earlierDate:(NSDate *)anotherDate;  与anotherDate比较,返回较早的那个日期   - (NSDate *)laterDate:(NSDat

iOS开发专栏 3071

php version compare,PHP函数-version_compare()用于客户端版本比较

与客户端对接的时候,有的时候为了兼容以前的版本,会做一个版本的判断,接口端。由于安卓客户端和IOS客户端的版本app_version传值不是一样的,所以处理起来有点麻烦,就谷歌了一下,最终找到了一个PHP版本控制的方法,于是就用来处理这样的问题了。php手册中是这么描述version_compare()函数的:version_compare()用于对比两个「PHP 规范化」的版本数字字符串。 ...

weixin_34357209的博客 1491

iOS编程中比较两个日期的大小

iOS编程中比较两个日期的大小   比较日期大小是任何编程语言都会经常遇到的问题,再iOS编程中,通常用NSDate对象来存储一个时间(包括日期和时间、时区),而且 NSDate类提供了compare方法来进行时间的比较,但有时不想那么精确的知道两个日期的大小(默认会比较到秒),可以用下面的实现方法: +(int)compareOneDay:(NSDate *)oneDa

YLGWHYH的专栏 2135

ios 字符串的比较

  ios 字符串的比较         // 声明一个NSString  NSString *str;  // 使用stringWithFormat生成一格式化字符串  str = [NSString stringWithFormat:@"This is %@","John"];  NSLog(@"str---&gt;%@",str);  // 字符串长度length;  NSL...

stephen830 570

iOS10 compare 的坑

iOS10 compare 的坑

Sico2Sico 536

ios比较字符串判断为空_小白学开发(iOS)OC_ 字符串的比较判断(2015-08-12)

//// main.m//字符串的比较判断//// Created by admin on 15/8/13.// Copyright (c) 2015年 admin. All rights reserved.//#importint main(int argc,const char * argv[]) {@autoreleasepool{// 1.判断字符串是否为空NSString *st...

weixin_42318815的博客 276

芒果iOS开发之NSComparisonResult比较结果

在学习NSString的时候,可能会经常遇到比较两个字符串的大小,系统已经提供了字符串比较的函数: - (NSComparisonResult)compare:(NSString *)string; 这个方法可以比较两个字符串的大小,这个方法的返回值类型是NSComparisonResult类型。我们还需要进入NSComparisonResult内部看看究竟是什么。 typedef NS_

张茫原 1万+

iOS开发之一些字符串常用的代码

1、判断字符串是否相等使用isEqualToString: NSString *astring01 = @"This is a String!"; NSString *astring02 = @"This is a String!"; BOOL result = [astring01 isEqualToString:astring02]; NSLog(@"result

记事本 2429
上一篇: MRC/ARC(内存管理)杂记
下一篇: iOS远程推送自定义语音合成播放声音(类似支付宝收款提醒)
Cao_Shixin攻城狮
博客等级 码龄10年 710粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值