当前位置: 首页 > 工具软件 > Swift Format > 使用案例 >

Swift基础 String类型

微生智刚
2023-12-01

关于字符串

在OC中,字符串是NSString类。
而在Swift中,字符串是String结构体。
结构体比起类,性能更好,String结构体支持遍历。
在Swift中,提供了NSString转String的便捷方法。

根据字符串取得类

通过字符串取得类是这么做的:

NSClassFromString(<ClassName: String>)->AnyClass?

从上可以发现,返回的是一个AnyClass类型,并且还是个可选类型。
需要注意的是,在Swift中,我们传入的类型需要包含命名空间,命名空间默认是我们项目名称。
be like:

NSClassFromString("IDB.HomeController")

IDB是我的项目的项目名称,也是就默认的命名空间,HomeController是我想要通过字符串创建的控制器。

这样的方法可以帮助我们后期通过网络请求,来动态加载一些固定View的样式,比如根据节日活动更换图片以及tabbar上title的文字,比如更换成不同的自定义View等等。

遍历字符

在Swift5.0之前,characters属性是可以用的,但在Swift5.0后,该属性就淘汰了。

for subCharacter in string.enumerated(){
    print(subCharacter)
}
let characters = string.enumerated()

print(characters)

运行结果:

(offset: 0, element: "h")
(offset: 1, element: "e")
(offset: 2, element: "l")
(offset: 3, element: "l")
(offset: 4, element: "o")
(offset: 5, element: "w")
(offset: 6, element: "o")
(offset: 7, element: "r")
(offset: 8, element: "l")
(offset: 9, element: "d")
EnumeratedSequence<String>(_base: "helloworld")

格式化字符串

在实际开发中,我们常需要用到格式化的字符串,比如08,或者0.8,或者保留两位小数等等。这时我们就需要用到字符串的格式化。

之前Swift还是可以使用String(format: arguments:[ ])方法来进行格式话的,但是后来似乎是被淘汰掉了。

感觉是Swift在字符串的有些方面越改是越复杂,如果大家没有找到好的方法,还是先采用的还是OC时代的一些做法:也就是先用NSString处理,然后再转回String。

let h = 8
let m = 23
let s = 9

let timeString = NSString.init(format: "%02d:%02d:%02d", h,m,s)
print(timeString)

运行结果:

08:23:09

判断是否包含字符

    var a = "hello"
    if a.contains("hell"){
		print("hell")
	}

追加字符

    var a = "hello"
    a.append(" world")
    print(a)//运行结果:hello world

插入字符

    var a = "hello"
    //从0开始算,在3的位置插入“ ”
    a.insert(contentsOf:" ", at:a.index(a.startIndex, offsetBy:3))
    print(a)//运行结果:hel lo

获取子字符串:

    var a = "hello"
    //假设我们要获取ell
    //则需要先获取起始位置(编号是从0开始的)
    var subStringStart = a.index(a.startIndex,offsetBy:1)
    //再获取结束位置(编号是从0开始的)
    var subStringEnd = a.index(a.startIndex,offsetBy:3)
    a = a[subStringStart...subStringEnd]
    print(a)

运行结果:

    ell

当然也有获取前缀和后缀的方法,就是调用oc的方法,这里就不说明了。

    a.prefix(4)//hell

拼接字符串:

    var a = "hello"
    var b = "world"
    a = a + b	//同字符串类型直接拼接
    //不同类型的字符串拼接需要用\()语法
    var c = 11
    a = a + "\(c)"

循环字符串

好骚的操作

    var a = "hello"
    for index in a {
		print(index)
	}

运行结果:

	h
	e
	l
	l
	o

其他

被#“和”#包含起来的代码全部会当成字符串处理。

    var a = "hello"
    //如果输出的时候想要字符串带上引号
    var b = #""hello""#
    print(b)
    //这样b就会输出:"hello"
 类似资料: