在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
String是结构体,NSString是类,这是它们的根本区别。 在 Swift 中,结构体struct是值类型,String是结构体,所以也是值类型。值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。这意味着它们的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制。 类class是引用类型,NSString是类,所以也是引用类型。与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的是已存在的实例本身而不是其拷贝。
一、String 与 NSString 的区别 1.1 String独有的API var str = String()
str = "54321-bca"
///判断是否为空 ///字符串排序并输出字符的数组 str.sorted()//["-", "1", "2", "3", "4", "5", "a", "b", "c"]
str = " St ri ng "
let strFiltered = str.filter { (charater) -> Bool in charater != " " } print(strFiltered)//”String“
let strFiltered2 = str.filter{ $0 != " " } print(strFiltered2)//”String“ · String的enumerated方法: str = "String" for (index,value) in str.enumerated() { print("\(index)-\(value)") } /* 0-S 1-t 2-r 3-i 4-n 5-g */
1.2 NSString独有的API var nsstr = NSString()
///判断第一个字符,首字符为 Y\y\T\t\数字 返回true,否则返回false nsstr.boolValue//true
///判断两个字符串是否相等 nsstr.isEqual(to: "54321")//true
///把字符串转成整型Int,若不能转成Int则返回0 1.3 String与NSString的API不同,用法相同 var str = String() var nsstr = NSString() str = "54321-bca" nsstr = "54321-ns"
///获取字符串数量 str.count//9 nsstr.length//8
///结果返回Substring str.prefix(str.count-2)//"54321-b" str.prefix(while: {"0"..."5" ~= $0})//"54321" str.suffix(3)//"bca" str.dropLast(4)//"54321" str.dropFirst(2)//"321-bca"
nsstr.substring(to: nsstr.length-3)//"54321" nsstr.substring(from: 6)//"ns" nsstr.substring(with: NSMakeRange(1, 4))//"4321"
str.append("s")//() print(str)//"54321-bcas"
let nsstr1 = nsstr.appending("s") print(nsstr1)//"54321nss" print(nsstr)//"54321ns"
var str = String() var nsstr = NSString() str = "54321-bca" nsstr = "54321-ns"
///检查字符串是否含有特定的前缀/后缀 str.hasPrefix("54")//true str.hasSuffix("ca")//true nsstr.hasPrefix("543")//true nsstr.hasSuffix("ns")//true
///使用特定字符拆分字符串并输出数组 str.components(separatedBy: "-")//["54321", "bca"] nsstr.components(separatedBy: "-")//["54321", "ns"]
///大小写字母转换(结果都返回String) str.uppercased()//"54321-BCA“ str.lowercased()//"54321-bca” nsstr.uppercased//"54321-NS“ nsstr.lowercased//"54321-ns"
///首字母大写(结果都返回String) str.capitalized//"54321-Bca" nsstr.capitalized//"54321-Ns"
· 把字符串前后不想要的字符去掉并返回一个新的String。不想要的字符可以是 空格.whitespaces \ 换行符.newlines \ 数字.decimalDigits \ 字母.letters \ 大写字母.uppercaseLetters 等等。 str = " \r 54321-n "
nsstr = "\r 54321-ns "
let strTrimed = str.trimmingCharacters(in: .whitespacesAndNewlines) print(str)//" \r 54321-n " print(strTrimed)//"54321-n" let nsstrTrimed = nsstr.trimmingCharacters(in: .whitespacesAndNewlines) print(nsstr)//"\r 54321-ns " print(nsstrTrimed)//"54321-ns"
//结果返回String let hexStr = String().appendingFormat("%x",16)//十进制转十六进制,结果为"10" let oStr = String().appendingFormat("%o",16)//十进制转八进制,结果为"20" let dStr = String().appendingFormat("%d",0x10)//十六进制转十进制,结果为"16" let dStr1 = String(format: "%d", 0o10)//八进制转十进制,结果为"8"
let hexNSStr = NSString().appendingFormat("%x", 16)//十进制转十六进制,结果为"10" let oNSStr = NSString().appendingFormat("%o",16)//十进制转八进制,结果为"20" let dNSStr = NSString().appendingFormat("%d",0x10)//十六进制转十进制,结果为"16" let dNSStr1 = NSString(format: "%d", 0o10)//八进制转十进制,结果为"8"
str = "hello S" nsstr = "hello NS" let StrReplaced = str.replacingOccurrences(of: "S", with: "amberoot") print(StrReplaced)//"hello amberoot" let NSStrReplaced = nsstr.replacingOccurrences(of: "NS", with: "amberoot") print(NSStrReplaced)//"hello amberoot 这位兄弟总结的不错。
|
请发表评论