首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift 3字符串比较在if条件语句中不起作用

的原因是因为在Swift 3中,字符串比较操作符"=="只能用于比较相同类型的字符串。如果要比较不同类型的字符串,需要先将它们转换为相同类型。

解决这个问题的方法是使用字符串的compare方法进行比较,该方法可以指定比较的规则和选项。比较字符串时,可以使用compare方法返回的结果来判断字符串是否相等、前后顺序等。

下面是一个示例代码,演示了如何使用compare方法进行字符串比较:

代码语言:txt
复制
let str1: String = "Hello"
let str2: NSString = "hello"

let result = str1.compare(str2 as String, options: .caseInsensitive)

if result == .orderedSame {
    print("字符串相等")
} else if result == .orderedAscending {
    print("str1在str2之前")
} else if result == .orderedDescending {
    print("str1在str2之后")
}

在上面的代码中,我们将str2转换为String类型,然后使用compare方法比较str1和str2。options参数指定了比较时忽略大小写。根据compare方法返回的结果,我们可以判断字符串的相等性以及前后顺序。

对于Swift开发者来说,如果遇到字符串比较不起作用的问题,可以尝试使用compare方法进行比较,并根据返回的结果进行相应的判断和处理。

关于Swift字符串比较的更多信息,可以参考腾讯云开发者文档中的相关内容:Swift字符串比较

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

窥探Swift编程之强大的Switch

今天这篇博客就是要看一下Swift中的Switch的不同之处,来总结一下Switch不同的特性。Swift语言中的Switch中,你可以匹配数字,字符串,元组,字符区间等。...下方是把数字1,2,3转换成“老大”,“老二”,“超生了”的字符串。由实例可知,匹配完 2 后,即使没加break语句,也不会继续执行后边的case语句了,这一点还是比较人性化的。...3.使用Switch语句匹配数字区间       这个特性也是灰常不错的,Swift中有区间运算符(1...5 表示1到5这个区间中的所有整数)。...4.匹配元组       元组可以可以作为case的条件的,元组case中的用法还是比较灵活的。case条件中,我们可以使用下划线来忽略元组中的某一项。...二、Where子句     SQL中Where子句的出镜率是比较高的,但是出现Switch-Case分支语句中实不多见。

1.3K100
  • Swift 基础之可选

    然而,这只 对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如 NSNotFound)来暗示值缺失。...Swift 的 String 类型有一个叫做 toInt 的方法,作用是将一个 String 值转换 成一个 Int 值。然而,并不是所有的字符串都可以转换成一个整数。...字符串"123"可以被转 换成数字 123,但是字符串"hello, world"不行。...像下面这样 if 语句中写一个可选绑定: if let constantName = someOptional { statements } 你可以像上面这样使用可选绑定来重写 possibleNumber... Objective-C 中,nil 是一个指向 不存在对象的指针。 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为 nil,不只是对象类型。

    78330

    Swift学习总结

    2、溢出操作符——&+,&-,&*,Swift的哲学是触发陷阱比潜在安全漏洞要好 3字符串支持插值\(var)占位符,支持复合赋值操作符+=连接字符串 4、swift必须手动转换类型,不会自动类型转换...Switch既支持一个值与给定值比较,也支持多个值与给定值比较,还支持区间值与给定值比较,多个值用逗号分隔,区间则用三个点…来界定。...switch支持值绑定,case语句中声明变量或常量,其值绑定为状态码的值。switch绑定值可以配合where语句使用,能额外检查一些条件,这个特性可以创建动态筛选条件。...8、区间既可在switch语句中匹配使用,也可以for-in循环中使用。 9、通配符_既可以switch语句使用,也可以for-in语句中替代迭代器,这样就可以忽略迭代器。...其语法与条件句中创建常量或变量一致,只是不需要再强制展开可空实例了,这个操作自动完成。

    3K20

    5.逻辑分支

    分支的介绍 分支即if/switch/三目运算符等判断语句 通过分支语句可以控制程序的执行流程 二. if分支语句 和OC中if语句有一定的区别 判断句可以不加() Swift的判断句中必须有明确的真假...: 当条件表达式为true时候跳过else语句中的内容,执行语句组内容 条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw guard...条件表达式 else { // 条换语句 break } 语句组 例子 var age = 18 func online(age : Int) -> Void { guard...let f = 3.14 switch f { case 3.14: print("π") default: print("not π") } 支持字符串类型...字符串的使用后面会详细讲解 let m = 5 let n = 10 var result = 0 let opration = "+" switch opration { case

    55310

    Swift基础 控制流程

    Swift还提供了一个for-in循环,可以轻松地在数组、字典、范围、字符串和其他序列上迭代。 Swift的switch语句许多类似C语言中比它的对应语句强大得多。...3 hours (3, 6, 9, 12) } 上面的示例使用for-in循环来迭代范围、数组、字典和字符串。...在上面的示例中,approximateCountswitch语句中计算。每个case都将该值与数字或区间进行比较。...带标签的语句 Swift中,您可以在其他循环和条件句中嵌套循环和条件语句,以创建复杂的控制流结构。然而,循环语句和条件语句都可以使用break语句过早地结束其执行。...您在if或guard语句中使用可用性条件执行代码块,具体取决于您要使用的API在运行时是否可用。编译器验证该代码块中的API是否可用时,使用可用性条件中的信息。

    11100

    Swift基础语法简化版

    比较运算符 >、>=、<、<=、==、!= 需要特别注意的是,比较运算符两边的数据类型必须为同一类型,如果类型不同,则编译器会报错。 区间运算符 Swift特有的。...let g = 8if g>0 { print("正数")} 区别2:Swift的判断句中必须要有明确的真假,必须要有明确的布尔值,Swift中不再有非0即真的概念;OC中是非0即真、非空即真。...guard语句必须带有else语句,他的语法如下: 当条件表达式为true的时候跳过else语句的内容,执行后面的语句组; 当条件表达式为false的时候执行else语句中的内容,跳转语句一般是return...For循环 for循环分为两种,一种是传统的C语言风格的for循环,如下: for var i = 0; i < 10; i++ { print(i)} 这种传统写法,Swift3中已经被淘汰了...字符串 OC和Swift中的字符串是有区别的: OC中,字符串类型是NSString;Swift中,字符串类型是String。 OC中定义字符串是使用@"";Swift中定义字符串是使用""。

    3.8K50

    SQL中使用的符号

    %PATTERN中,用于将文字值包含在模式字符串中。例如,'3L1"L".L'(意思是3个小写字母,后面跟着大写字母“L”,后面跟着任意数量的小写字母)。...SELECT DISTINCT BY子句中,将用于选择唯一值的项或项的逗号分隔列表括起来。SELECT语句中,将子查询括FROM子句中。括起UNION中使用的预定义查询的名称。...俄语、乌克兰和捷克区域设置的日期分隔符:DD.MM.YYYY作为变量或数组名称的前缀,指定通过引用传递:.name %PATTERN字符串多字符通配符。 / 斜杠(47):除法算术运算符。...< 小于(60):小于比较条件。 <= 小于等于:小于等于比较条件。 小于/大于:不等于比较条件。 = 等号(61):等于比较条件WHERE子句中,内联接。...> 大于(62):大于比较条件。 >= 大于等于:大于等于比较条件。 ? 问号(63):动态SQL中,由Execute方法提供的输入参数变量。%MATCHES 模式字符串的单字符通配符。

    4.6K20

    Swift基础语法(一)

    比较运算符 >、>=、<、<=、==、!= 需要特别注意的是,比较运算符两边的数据类型必须为同一类型,如果类型不同,则编译器会报错。 区间运算符 Swift特有的。...guard语句必须带有else语句,他的语法如下: 当条件表达式为true的时候跳过else语句的内容,执行后面的语句组; 当条件表达式为false的时候执行else语句中的内容,跳转语句一般是return...For循环 for循环分为两种,一种是传统的C语言风格的for循环,如下: for var i = 0; i < 10; i++ { print(i) } 这种传统写法,Swift3中已经被淘汰了...字符串 OC和Swift中的字符串是有区别的: OC中,字符串类型是NSString;Swift中,字符串类型是String。 OC中定义字符串是使用@"";Swift中定义字符串是使用""。...如果不确定向下转换能否成功,那么就使用条件形式的类型转换操作符 as? 3,as! 表示的是转成具体类型,相当于对使用as?

    4.3K30

    Swift| 基础语法(二)

    前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...本文涉及: 常量&变量 Swift中数据类型 逻辑分支 循环 ---- 一、常量&变量 什么是常量和变量 Swift中规定:定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用var...Swift进行基本运算时必须保证类型一致,否则会出错 相同类型之间才可以进行运算 因为Swift中没有隐式转换 4、数据类型的转化 Int类型转成Double类型:Double(标识符) Double...a : b print(result) 3、guard的使用 guard是Swift2.0新增的语法 它与if语句非常类似,它设计的目的是提高程序的可读性 guard语句必须带有else语句,它的语法如下...: 当条件表达式为true时候跳过else语句中的内容,执行语句组内容 条件表达式为false时候执行else语句中的内容,跳转语句一般是return、break、continue和throw guard

    77720

    Swift 是猴还是猿?

    类型后面加一个问号来标记这个变量的值是可选的。 如果optionalName变量的可选值是 nil,条件会判断为 false,大括号中的代码会被跳过。...可以使用 guard 语句来要求条件必须为真时,以执行guard语句后的代码。不同于 if 语句,一个 guard 语句总是有一个 else 从句,如果条件不为真则执行 else 从句中的代码。...如下: 字符串拼接和比较 Swift里面字符串可以直接拼接: 也可以直接比较: Swift的语法设计使一些C/Objective-C常见错误不可能再出现,比如:字符串插值参数打印;if、while...在编译时能做的优化能做的更多,从而性能提升空间也较OC的大,但目前来看Swift只有字符串处理方面优化的比较不错,其它方面并不明显。...3.x到4.x一个典型的改动点是关于set selector,Swift 3.x时,selector函数定义前不需要添加@objc修饰。Swift 4.0中则必须要加@objc修饰。

    3.9K30

    Swift教程(一)--基础内容

    Swift 为所有 C 和 Objective-C 的类型提供了自己的版本,包括整型值的 Int ,浮点数值的 Double 和 Float ,布尔量值的 Bool ,字符串值的 String 。...var name: String = "dapeng" print(name) //输出 dapeng Swift 使用字符串插值 的方式来把常量名或者变量名当做占位符加入到更长的字符串中,然后让 Swift...= "swift语言可选类型"//声明可选类型字符串,并赋初值 var opStu:Student? //声明可选opStu对象,赋初值nil 注意:类型和 ?...进行强制解析 }else{ print("字符串为nil") } 可选项绑定 使用可选绑定,摆脱了频繁的判断是否为nil赋值,但是使用可选绑定(optional binding)来判断可选类型是否包含值...可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个常量或者变量。

    1.3K30

    Swift基础 基础知识

    Swift使用字符串插值将常量或变量的名称作为占位符包含在较长的字符串中,并提示Swift将其替换为该常量或变量的当前值。...注意 可用于字符串插值的所有选项都在字符串插值中描述。 注释 使用注释您的代码中包含不可执行的文本,作为对您自己的便条或提醒。编译代码时,Swift编译器会忽略注释。...如果陈述和强制打开包装 你可以使用’ if ‘语句,通过比较可选的和’ nil ‘来确定可选的是否包含一个值。可以使用“等于”操作符(‘ == ‘)或“不等于”操作符(‘ != ‘)执行此比较。...您可以根据需要在单个if语句中包含尽可能多的可选绑定和布尔条件,并用逗号分隔。如果可选绑定中的任何值为nil,或者任何布尔条件计算为false,则整个if语句的条件被视为false。...以下示例显示了可选字符串和隐式未包装的可选字符串以显式String的形式访问其包装值时的行为差异: let possibleString: String?

    15400

    Swift 比较运算和三目条件运算

    一:比较运算 所有标准 C 中的比较运算都可以 Swift 中使用。 等于 a == b 不等于 a!...== 这两个比较符来判断两个对象是否引用同一个 对象实例。更多细节 类与结构。 每个比较运算都返回了一个标识表达式是否成立的布尔值: 1 == 1 // true, 因为 1 等于 1 2 !...true, 因为 2 大于 1 1 < 2 // true, 因为 1 小于2 1 >= 1 // true, 因为 1 大于等于 1 2 <= 1 // false, 因为 2 并不小于等于 1 比较运算多用于条件语句...这比第二段代码简洁得多, 无需将 rowHeight 定义成变量, 因为它的值无需 if 语句中改变。 三目条件运算提供有效率且便捷的方式来表达二选一的选择。...需要注意的事, 过度使用三目条件运算就会由简洁的代码变成难懂的 代码. 我们应避免一个组合语句使用多个三目条件运算符。

    52820

    Swift基础语法(常量变量、数据类型、元组、可选、断言)

    Swift字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。...注意:字符串插值所有可用的选项,请参考字符串插值。 注释 请将你的代码中的非执行文本注释成提示或者笔记以方便你将来阅读。Swift 的编译器将会在编译代码时自动忽略掉注释部分。...条件语句,例如if,请参考控制流。 如果你需要使用Bool类型的地方使用了非布尔值,Swift 的类型安全机制会报错。...类似i == 1这样的比较,请参考基本操作符。 和 Swift 中的其他类型安全的例子一样,这个方法可以避免错误并保证这块代码的意图总是清晰的。 元组 元组(tuples)把多个值组合成一个复合值。...像下面这样if语句中写一个可选绑定: if let constantName = someOptional { statements } 你可以像上面这样使用可选绑定来重写possibleNumber

    2K90

    Swift是花拳绣腿吗?——谈谈开发语言与程序员的职业发展

    功能强大方面,有一个特性中是对字符串操作的简化,在下面的代码中,Swfit可以用\(a)的形式,代替C语言中对字符串format操作。大大简化了代码,增加了程序的可读性。...比如在Swift beta版中,for-in语句中可以使用“n..m”语法,表示从n开始,循环m次。例如: 但是正式版中,这种写法被取消了。...更广义的说,C中的“指向函数的指针”也满足上述的3条件。 因此,闭包虽然是现代语言的特性,但是很多语言都支持,并不能算一个很新颖的特性。 另一个现代的特性是“泛型”。...对于一个编程语言,除了语言特性之外,还可以从以下3个方面进行比较: 代码效率 学习成本 生态环境 其中代码效率又可以分为代码的“书写效率”、“编译效率”和“运行效率”。...如果与 Objective-C比较Swift书写效率上完胜。 在编译效率上,由于Swift没有.h头文件和一些其他特性,因此比Objective-C在理论上要快。

    1.6K30

    PHP丨PHP基础知识之条件SWITCH判断「理论篇」

    Switch一些计算机语言中是保留字,其作用大多情况下是进行判断选择。...所以,别忘了 break 语句就很重要(即使某些情况下故意想避免提供它们时)。 switch 语句中条件只求值一次并用来和每个 case 语句比较 elseif 语句中条件会再次求值。...如果条件比一个简单的比较要复杂得多或者一个很多次的循环中,那么用 switch 语句可能会快一些。 一个 case 中的语句也可以为空,这样只不过将控制转移到了下一个 case 中的语句。...switch语句注意事项 switch语句执行时会从上到下根据括号中表达式的值作比较,当某个case语句中的表达式与此值相同时,就执行这个case语句或语句序列,直到遇到break为止。...PHP丨PHP基础知识之条件IF判断「理论篇」 PHP丨PHP基础知识之流程控制WHILE循环「理论篇」 PHP丨PHP基础知识之流程控制for循环「理论篇」

    2.3K11

    Hi Swifter:来和Guard问声好吧

    Swift正逐步占领iOS App实际开发的市场份额,Swift 的简洁、易用性已经吸引了大量开发者,大家已开始或准备开始使用Swift开发iOS App。...Swift 2.0 带来了令人激动的guard语句。但很多人还是不太理解guard的意义,特别是和 Swift 2.0 之前的简单if语句相比较。...与if语句不同的是,guard只有条件不满足的时候才会执行这段代码。你可以把guard近似的看做是Assert,但是你可以优雅的退出而非崩溃。 Swift 2 新增的guard 语句 ?...正如上面语法格式中所看到的, guard 语句的else 块中必须有return、break、continue或throw 语句来跳出guard 语句所在的代码块,当然也可以调用如fatalError...guard 语句的作用是“守护”后面的代码,只有当 guard 语句中Bool 条件为true 时才能执行被“守护”的语句(位于guard 之后的语句),当Bool 条件为false 时,程序就会进入执行

    56910

    IOS-swift5.1快速入门之旅

    如果你用C或Objective-C编写代码,这个语法看起来很熟悉 - Swift中,这行代码是一个完整的程序。您无需为输入/输出或字符串处理等功能导入单独的库。...实验 用于\()字符串中包含浮点计算,并在问候中包含某人的姓名。 """对于占用多行的字符串,请使用三个双引号()。只要与匹配引号的缩进匹配,就会删除每个引用行开头的缩进。...} else { teamScore += 1 } } print(teamScore) // Prints "11" if语句中条件必须是布尔表达式 - 这意味着代码如错误,而不是隐式比较为零...else如果optionalName是,则添加一个设置不同问候的子句nil。 如果是可选值nil,则条件为,false并且跳过括号中的代码。...循环的条件可以最后,确保循环至少运行一次。

    2.1K20
    领券