强大的swift字符串
Swift集百家之长,吸收了主流语言java,c,c++等的好的特性,所以它功能十分强大,今天我们就来看看它强大的字符串。
首先,我们带着这样几个问题去了解、理解swift的字符串。
1、swift字符串怎么初始化的?
2、swift字符串长度可变吗?
3、swift字符串是指针,还是实际的值?
4、swift有哪些特性?
下面,我来一一解答这些问题。
(1) swift 字符串的初始化有2种方式,这两种方式的结果都是一样的。我们来初始化一个空字符串。
var str1 = "" // 第一种方式
var str2 = String() // 第二种方式
当初始化一个非空字符串时,可以这样 var str3 = "hello word",这里要说明的是,“”里的值可以是任意符号,数字,文字,字母....
(2) swift字符串长度是可变的,当然这只针对于用var 定义的字符串,用let定义的字符串常量是不可变的。正因为这个特性,它可以和其他字符,字符串通过符号“ = ”、“ += ”组合成新的字符串。
var str1 = "hello"
var str2 = "world"
var str3:Character = "!" //这是定义字符的方式
var strs1 = str1 + str2 //结果为“hello word”
var strs2 = strs1 + str3 //结果为“hello word!”
(3)swift字符串 是实际的值,不是指针。当把字符串变量赋值给另一个值,它原来的值不变。当把字符串变量当作参数传递时,它也是一个实际的值。
var str1 = "你好"
var str2 = str1
这时,str1的值还是“你好”,由此可见,它不是指针,是一个实际的值。
(4)swift字符串有哪些特性?它的比较机制,验证机制,遍历机制,转换机制,组合机制,都是它的特性。
a、比较机制。字符串之间的比较是可以分多样的。
它比较完全相等时,用“==”来连接;
它比较前缀相等时,给定一个字符串前缀,然后用要比的字符串,调用hasPrefix方法,参数为给定的前缀;
它比较后缀相等时,给定一个字符串后缀,然后用要比的字符串,调用hasSuffix方法,参数为给定的后缀。
举个例子,我们学校在开兴趣班,要统计各个兴趣班的人数有多少?用这个就可以很容易的找出来。
let students =["ios,谢明,s3sj101","android,胡军,s3jn95","ios,都美君,s3jn95","技术支持,高小龙,s3jn92","数据库,阿斯,s3jn92","数据库,封剑,s3j101"]
要统计出 各个兴趣班的人数,只需这样做:
var ios = 0 //定义ios班的人数
var android = 0 //定义android班的人数
var technical = 0 //定义技术支持班的人数
var database = 0 // 定义数据库班的人数
for student in students {
if student.hasPrefix("ios") {
ios++
}
if student.hasPrefix("android") {
android++
}
if student.hasPrefix("技术支持") {
technica++
}
if student.hasPrefix("数据库") {
database++
}
}
print(“报ios班的人数\(ios)”)
print(“报android班的人数\(android)”)
print(“报技术支持班的人数\(technica)”)
print(“报数据库班的人数\(database)”)
如果我们要统计各个原班有多少人,可以这样做:
let students =["ios,谢明,s3sj101","android,胡军,s3jn95","ios,都美君,s3jn95","技术支持,高小龙,s3jn92","数据库,阿斯,s3jn92","数据库,封剑,s3j101"]
var s3sj95 = 0 //定义s3sj95班的人数
var s3jn92 = 0 //定义s3jn92班的人数
var s3j101 = 0 //定义s3j101班的人数
for student in students {
if student.hasSuffix("s3sj95") {
s3sj95++
}
if student.hasSuffix("s3jn92") {
s3jn92++
}
if student.hasSuffix("s3j101") {
s3j101++
}
}
print(“s3sj95班的人数\(s3sj95)”)
print(“s3jn92班的人数\(s3jn92)”)
print(“s3j101班的人数\(s3j101)”)
b:验证机制。判断一个字符串是不是为空,我们可以用isEmpty属性获取
var str = " "
if str.isEmpty {
print("str是空字符串")
}else{
print("str是非空字符串")
}
执行结果为:str是空字符串
c:遍历机制。我们知道,字符串是有字符组成,swift可以遍历字符串中的每个字符。
var str = "helloWord"
for char in sre {
print("\(char)")
}
执行结果会把每个字符遍历出来。
d:转换机制。它还支持字符串的大小写转换。通过uppercaseString和lowercaseString属性可以做到,我们来看看:
var str = "helloWord"
var upper = " " // 定义一个存放转化为大写后的变量
var lower = " " //// 定义一个存放转化为小写后的变量
upper = str.uppercaseString
lower = str.lowercaseString
然后分别输出就行了 ,很简单吧。。。
e:组合机制.组合机制是它很大的一个亮点,它的长度是可变的,因此也是可以组合的。这给我们的开发带来很大的遍历,是我们开发者的福音哦。
这里就不举例了,他们之间可以通过“+”、“+=”、也可以通过一个合法的表达式生成新的字符串。最后,它还可以计算字符串的总长度,
需要用到的方法是:countElements。参数为要计算的字符串本身。
好了,今天的分享就到这。希望可以帮到刚刚学习ios或者想要学ios的朋友们,我也是新手,有不足和不对的地方求大神指正。让我们一同进步!大家可以关注我的微博http://www.cnblogs.com/lb0129/
强大的swift字符串的更多相关文章
- [Swift]字符串(String类、NSString类)常用操作
NS是Cocoa类对象类型的前缀,来源于乔布斯建立的另一家公司--NeXTNSString的使用方法,和Swift语言中的String有很多相似之处. 1.字符串的定义String类 var str1 ...
- 【译】Swift 字符串速查表
[译]Swift 字符串速查表 2015-12-18 10:32 编辑: suiling 分类:Swift 来源:CocoaChina翻译活动 10 5585 Swift字符串 招聘信息: iOS高级 ...
- swift(二)swift字符串和字符和逻辑运算
/* 1.swift字符串和字符 2.构造字符串 3.字符串比较 4.数值运算 5.复制运算 6.关系运算 7.逻辑运算 8.区间运算 */ /* //数据 + 数据的处理 //字符信息+ 字符信息的 ...
- Swift字符串操作-持续更新-2022
Swift字符串追加 var str = "OC" str.append(" Swfit") print(str) // 输出结果: OC Swift 输出结果 ...
- Swift字符串类型
字符串初始化 1.初始化 let someString = "Some string literalvalue" let wiseWords = ...
- Swift字符串的插入、删除和替换-备
对应可变字符串可以插入.删除和替换,String提供了几个方法可以帮助实现这些操作.这些方法如下: splice(_:atIndex:).在索引位置插入字符串. insert(_:atIndex:). ...
- 【iOS】Swift字符串截取方法的改进
字符串截取方法是字符串处理中经常使用的基本方法.熟悉iOS的朋友都知道在基础类的NSString中有substringToIndex:,substringFromIndex:以及substringWi ...
- Swift字符串可变性
您可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改: var variableString = "Horse" variableStrin ...
- [Swift]字符串根据索引获取指定字符,依据ASCII实现字符和整数的相互转换
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
随机推荐
- JQuery easyui 笔记
1.控件启用,禁用 $form.find("input[type!='button']").removeAttr("readonly"); $form.find ...
- Git学习(四)——分支管理
一.创建与合并分支 1.创建分支 一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点.每次提交 ,mast ...
- iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了
苹果系统升级后好多应用都发了新版本来适配,今天就来分享一下我的适配历程. 首先是出现的问题: 1.push一个控制器,返回按钮和标题神奇的消失了,打开三维视图(比较坑的是有的版本老到打不开三维视图 ) ...
- HTML DOM 方法
一.HMTL DOM对象 --方法和属性 1.1常用的方法. 1.getElementByld( id )方法 --获取带有指定id 的节点( 元素 ) 2.appendChild( node )方法 ...
- I/O复用
1.I/O模型 一个输入操作通常包括两个不同阶段:等待数据准备好:从内核到进程拷贝数据. 阻塞I/O模型 非阻塞I/O模型 I/O复用模型:内核发现进程指定的一个或多个I/O条件就绪,它就通知进程,由 ...
- js的form基础知识点
在HTML 中,表单是由<form>元素来表示的,而在JavaScript 中,表单对应的则是HTMLForm-Element 类型.HTMLFormElement 继承了HTMLElem ...
- 【bzoj3211】花神游历各国
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 551 1 2 2 1 2 1 1 2 2 2 ...
- MJPhotoBrowser BUG修复
崩溃在loading.progress = (float)receivedSize/expectedSize; 分析:MJPhotoView 执行了hide移除了MJPhotoLoadingView, ...
- IE8的兼容性问题
IE的兼容性问题是前端开发人员的老大难问题,不过随着时代的发展,IE6逐渐的被淘汰,现在以及很少有网站兼容IE6了,一般都兼容到IE8,现在我总结了一些IE8的兼容性问题及解决方法. 1.使用meta ...
- NOIP2014 总结
想了很久,才开始动笔. 怎么说,感觉挺对不起自己的.愚蠢的失误让我正好卡着一等线,真希望不要是二等奖. 最难过的是,努力全葬送在愚蠢上面了. 不过也好,学会平静自己也是一种能力. 半期考试也遭的一塌糊 ...