4.0字符串拼接 swift

2018-03-12 23:21:37 u014760573 阅读数 200

<一>字符串

OC的字符串是一个对象:

        0.NSString(不可变的),NSSMutableString(可变的)

        1.获取字符串长度:str.length

Swift的字符串是一个结构体:

        0.let str = "不可变字符串"; var str = "可变字符串"

        1.swift的字符串支持遍历

        2.获取字符串长度 str.charcters.count 

        3.获取字节长度 str.lengthOfBytes

        4.字符串拼接 str + "aaaa" 

        5.字符串拼接整型 str + String(10)  或者 str + "\(10)"

<二>字符串的截取与替换

// 1.截取第一个字符
//let startIndex = str.index(after: str.startIndex)
//let s = str.substring(to: startIndex)

// 2.截取最后一个字符
//let endIndex = str.index(before: str.endIndex)
//let end = str.substring(from: endIndex)
// 3.截取字符串
var s1 = (str as NSString).substring(from: 0);
var s2 = (str as NSString).substring(to: 5);
var s3 = (str as NSString).substring(with: NSMakeRange(5, 5));

2017-03-04 12:26:05 Reflection_ 阅读数 1447

4.1字符
1.格式: 变量关键字和常量关键字
变量 : Character = 字符值。
注意点:字符值 必须用双引号括起来, 必须是一个字符。
例:
var ch :Character = “c”// 字符值 必须用双引号,并且是一个字符
println(“ch=(ch)”)
运行结果
ch=c
2.字符串和字符的关系:
字符串是由N个字符组成的,即字符串是字符的集合。
例:
var str = “ABC”//字符串
“ABC” 是有 三个字符组成的分别是 :字符”A”,字符“B”,字符”C”
4.2创建字符串
1.Swift支持String字符串类型和Charater字符类型来提供一个快速的、支持Unicode编码的方式来处理字符操作。
Swift的String类型和Objective-C的NSString无缝接合,所有NSString的API对String同样适用。但是String变量总是可变长的,而在Objective-C中变长字符串是NSMutableString。
2.Swift字符串是传值类型,在传入函数参数或者赋值时,它是新建一个原来字符串的拷贝,而不是分配一个指针,新建字符串和原来的字符串并不储存在同一个空间。区别于Objective-C中NSString,后者是传址类型,即相当于一个指针。
Character字符类型同样用双引号把字符括起来,每一个字符代表一个独立的Unicode字符,字符串相当于Character的一个集合。
字符串和字符之间可以两两连接,使用最简单的运算符
+,+=同样适用。
3.创建空字符串
/定义一个空字符串第一种方法:
var str1=”“定义一个空字符串
第二种方法:
var str2 = String()
运行结果
str1=
str2=
4.判断字符串是否为空 (isEmpty)
判断字符串是否为空:
var str3:String = “”if str3.isEmpty { //isEmpty是字符串的一个属性,判断字符串是否为空
println(“str3的值是空”)
}
else{
println(“str3的值不为空”)
}

运行结果
str3的值是空
5.字符串的转义符
\0 空字符 \ 反斜杠\ t 制表符\n 换行符\r 回车符
\” 双引号\’ 单引号
例:
换行符:
var strA = “Hello World \n 1”// \n是换行符
println(“strA=(strA)”)
引号:
var strB = “\”双引号”// \” 是代表双引号
println(“strB=(strB)”)
单引号:
var strC = “\’单引号”// \’ 代表单引号
println(“strC=(strC)”)
运行结果
strA=Hello World
1
strB=”双引号
strC=’单引号
4.3字符串拼接
1.字符和字符串拼接,用+直接来拼接,组成新的字符串 (和字符串拼接用法一直)
例:import Foundation
var C:Character = “S”//定义C 是字符变量var str = C + ” hello”
println(str )
运行结果
S hello
2.字符串变量和常量用+或 +=来拼接 组成新的字符串
例:
多个字符串变量拼接 用 + 来拼接
var str4 = “hello”
var str5 = ” swift”
var str6 = str4+str5 //字符串变量拼接
println(“str6=(str6)”)
字符串变量和常量用+或 +=来拼接
var str7=”hello ”
str7 += “swift”//字符串变量和字符常量拼接可以用+= 拼接
println(“str7=(str7)”)
运行结果
str6=hello swift
str7=hello swift
4.字符串和占位变量 组成新的字符串
var a = 3//定义一个整形变量
var strQ = “a = (a)”// 字符串和占外变量,组成新的变量(占外变量表示(变量))
println(“(strQ)”)
运行结果
a = 3
4.4字符串插入、删除和替换
1.对应可变字符串可以插入、删除和替换,String提供了几个方法可以帮助实现这些操作。这些方法如下:
splice(_:atIndex:)。在索引位置插入字符串。
insert(_:atIndex:)。在索引位置插入字符。
removeAtIndex(_:)。在索引位置删除字符。
removeRange(_:)。删除指定范围内的字符串。
replaceRange(_:,with: String) 。使用字符串或字符替换指定范围内的字符串。
  代码:
var str =”Swift” print(“原始字符串:(str)”)
str.splice(“Objective-Cand “.characters, atIndex: str.startIndex)
str.insert(“.”,atIndex: str.endIndex)
str.removeAtIndex(str.endIndex.predecessor())
var startIndex =str.startIndex
var range =startIndex…endIndex
str.removeRange(range)
startIndex =str.startIndex
str.replaceRange(range,with: “C++”)
print(“替换范围后:(str)”)
输出结果:
原始字符串:Swift
插入字符串后:Objective-C and Swift
插入.字符后:Objective-Cand Swift.
删除.字符后:Objective-Cand Swift
删除范围后:C and Swift
替换范围后:C++ and Swift
4.5字符串比较
1.字符串比较:OC:
NSString *str1 = @”abc”;
NSString *str2 = @”abc”;
if ([str1 compare:str2] == NSOrderedSame)
else { NSLog(@”不相等”); }
{ NSLog(@”相等”); }
else { NSLog(@”不相等”); }
Swift:(== / != / >= / <=), 和C语言的strcmp一样是逐个比较
var str4 = “abc”;
var str5 = “abc”;
if str4 == str5 { print(“相等”); }
else { print(“不相等”); }
var str6 = “abd”;
var str7 = “abc”;
else { print(“不大于等于”); }
4.6大小和相等比较
字符串比较可以分为:不区分大小写比较、区分大小写比较以及本地化比较三部分。首先我们来看不区分大小写比较,不区分大小写比较顾名思义就是不区分字符串中字母的大小写,即A和a相同。
1.不区分大小写比较
在NSString中使用caseInsensitiveCompare(_:)方法实现这一功能,其语法形式如下:
func caseInsensitiveCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。该方法的返回值为ComparisonResult类型
。ComparisonResult是一个枚举类型,包含了以下3个成员:
q orderedAscending(-1):左操作数小于右操作数。
q orderedSame(0):两个操作数相等。
q orderedDescending(1):左操作数大于右操作数。
2.区分大小写比较
有不区分大小写比较,相对的就有区分大小写比较。在NSString中提供了4种方法实现了这种比较,
分别为:compare(:)、compare(:options:)、compare(:options:range:)和compare(:options:range:locale:)方法。
(1)compare(_:)方法就是用来比较字符串的,它需要区分字符串的大小写,其语法形式如下:
func compare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
compare(:options:)方法和compare(:)方法实现的功能类似,它是对字符串进行比较,但是它比compare(_:)方法多了一个mask参数。该参数可以用来指定一个选项标记(这个标记可以作为字符串比较的条件)。
在编程中,mask参数最常被设置为以下5种:
q caseInsensitive:不区分大小写比较
q literal:区分大小写比较
q backwards:从字符串末尾开始搜索
q anchored:搜索限制范围的字符串
q numeric:按照字符串里的数字为依据,算出顺序。例如 Foo2.txt < Foo7.txt < Foo25.txt
compare(_:options:)方法的语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = []) -> ComparisonResul
(3)compare(:options:range:)方法和compare(:options:)方法的功能类似,但是它比compare(_:options:)方法多了一个rangeOfReceiverToCompare参数,此参数可以用来对比较范围进行设置。其语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange) -> ComparisonResult
(4)compare(:options:range:locale:)方法和compare(:options:range:)方法的功能类似,但是它比compare(_:options:range:)方法多了一个locale参数,此参数可以用来设置语言环境。其语法形式如下:
func compare(_ string: String, options mask: NSString.CompareOptions = [], range rangeOfReceiverToCompare: NSRange, locale: AnyObject?) -> ComparisonResult
3.本地化比较
对于本地化比较在NSString中提供了3种方法,
分别为:
localizedCaseInsensitiveCompare(:)、localizedStandardCompare(:)和localizedCompare(_:)。
(1)localizedCaseInsensitiveCompare(_:)方法为不区分大小写、本地化比较字符串,其语法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
(2)localizedStandardCompare(_:)方法为本地化标准字符串的比较,其语法形式如下:
func localizedStandardCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
localizedCompare(_:)方法是区分大小写、本地化比较字符串,其语法形式如下:
func localizedCompare(_ string: String) -> ComparisonResult
其中,string用来指定一个比较的字符串。
4.判断字符串
在NSString中提供了3种对字符串判断的方法,
分别为:hasPrefix(:)、hasSuffix(:)和isEqual(to:)方法。
(1)hasPrefix(_:)方法用来判断字符串是否以某一指定字符串开头,其语法形式如下:
func hasPrefix(_ str: String) -> Bool
其中,str用来指定一个字符串。
(2)hasSuffix(:)方法正好和hasPrefix(:)方法相反,它是用来判断字符串是否以某一指定字符串结尾的,其语法形式如下:
func hasSuffix(_ str: String) -> Bool
其中,str用来指定一个字符串。
(3)isEqual(to:)方法是用来判断字符串是否相等的,其语法形式如下:
func isEqual(to aString: String) -> Bool
其中,aString用来指定字符串。
4.7前缀和后缀比较
1.前缀/后缀相等
通过调用字符串的 hasPrefix/hasSuffix 方法来检查字符串是否拥有特定前缀/后缀。两个方法均需要以字符串作为参数传入并传出 Boolean 值。两个方法均执行基本字符串和前缀/后缀字符串之间逐个字符的比较操作。
下面的例子以一个字符串数组表示莎士比亚话剧 罗密欧与朱丽叶 中前两场的场景位置:
let romeoAndJuliet = [
“Act 1 Scene 1: Verona,A public place”,
“Act 1 Scene 2: Capulet’s mansion”,
“Act 1 Scene 3: A room in Capulet’s mansion”,
“Act 1 Scene 4: A street outside Capulet’s mansion”,
“Act 1 Scene 5: The Great Hall in Capulet’s mansion”,
“Act 2 Scene 1: Outside Capulet’s mansion”,
“Act 2 Scene 2: Capulet’s orchard”,
“Act 2 Scene 3: Outside Friar Lawrence’s cell”,
“Act 2 Scene 4: A street in Verona”,
“Act 2 Scene 5: Capulet’s mansion”,
“Act 2 Scene 6: Friar Lawrence’s cell” ]

2017-10-18 18:18:43 bddzzw 阅读数 4504
最近突击了几天Swift 然后整理了一下练习的笔记

var str = "Hello"
var aa = 2.98
aa = 3
print(aa)

var optionalInteger : Int?
optionalInteger = nil
print(optionalInteger)

var stringA = ""

if stringA.isEmpty {
    print( "stringA 是空的" )
} else {
    print( "stringA 不是空的" )
}
// stringA 可被修改
var stringAV = "哈哈哈:"
stringAV += "www.xigoubao.com";
print( stringAV )

//let stringB = String("菜鸟教程:")
//stringB += "www.xigoubao.com";
//print( stringB )
//Swift 字符串的长度
var varA   = "www.xigoubao.com";

print( "\(varA), 长度为 \(varA.characters.count)" )

//Swift 判断字符串的类型
let myString: String = "256"
let myInt: Int? = Int(myString)
let description=CFCopyTypeIDDescription(CFGetTypeID(myInt as CFTypeRef))//判断基础类型
print("type = \(String(describing: description))")

//判断字符串的是否含有某个后缀
let stringAA = "123.jpg"
let stringBB = stringAA.hasSuffix("jpg")
print(stringBB)

//判断字符串是否含有某个前缀
let stringCC = "www.baidu.com";
let stringDD = stringCC.hasPrefix("www")

//字符串是否包含子字符串
let stringEE = "nihaoyaxigougouhahaha"
if stringEE.contains("xigou") {
    print("公司产品")
}else
{
   
    print("NONONONO")
}
let stringFF = "nihaoyaxigougouhahaha"

//判断字符串是否相等
if stringEE==stringFF {
    print("no")
}else
{
    print("yes")
}
//拼接字符串
print(stringFF+"====="+stringEE)
2018-01-15 10:21:05 mn704058053 阅读数 541

//
//  ViewController.swift
//  010-字符串
//
//  Created by 庄壮勇 on 2018/1/3.
//  Copyright © 2018年 Personal. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        demo4()
    }

    // MARK: - 字符串的子串
    func demo4() {
    
        // 建议: 一般使用NSString 作为中转, 因为Swift取子串的方法一直在优化
        // 更容易理解
        let str = "我们一起去飞"
       
        // 1.NSString
        let ocStr = str as NSString
        let s1 = ocStr.substring(with: NSMakeRange(2, 3))
        print(s1)
       
        // 2. String 的3.0 方法
        // 偶尔使用很方便,但是复杂的截取,不好理解,而且语法经常变化!知道就好
        //let r = 0..<5
        //str.substring(with: <#T##Range<String.Index>#>)
        //Index
        // startIndex position == 0
        print(str.startIndex)
        // endIndex position == 6
        print(str.endIndex)
       
        let s2 = str.substring(from: "我们".endIndex)
        print(s2)
       
        // 取子字符串的范围
        guard let range = str.range(of: "一起") else {
            print("没有找到字符串")
            return
        }
       
        // 一定找到的范围
        print("-------")
        print(range)
        print(str.substring(with: range))
    }
   
   
    // MARK: - 格式化
    func demo3() -> () {
        let h = 8
        let m = 9
        let s = 6
       
        let dateStr = "\(h):\(m):\(s)"
        print(dateStr)
        // 使用格式字符串格式化
        let dateStr1 = String(format: "%02d:%02d:%02d",h,m,s)
        print(dateStr1)
       
    }
   
    // MARK: - 字符串拼接
    func demo2() {
        let name = "老王"
        let age = 18
        let title: String? = "BOSS"
        let point = CGPoint(x: 100, y: 200)
       
        // \(变量/常量)
        // 拼接字符串需要注意 可选项 Optional
        // NSStringFromCGPoint(point)
        let str = "\(name) \(age) \(title ?? "") \(point)"
        print(str)
    }
   
    // MARK: - 字符串的长度
    func demo1() {
        let str = "hello world你好"
        // 1>返回指定编码的对应的字节数量
        // UTF8的编码 (0~4个),每个汉字是3个字节
        print(str.lengthOfBytes(using: .utf8))
       
        // 2>字符串长度 - 返回字符的个数 (推荐使用)
        print(str.characters.count)
       
        // 3> 使用NSString 中转
        /**
             str as NSString
        
         swift 中可以使用'值 as 类型' 类型转换
         */
       
        let ocStr = str as NSString
        print(ocStr.length)
       
    }
   
    //MARK: - 字符串的遍历
    func demo() {
       
        // NSString 不支持以下方式遍历
        let str = "我要飞得更高"
       
        for c in str.characters {
            print(c)
        }
    }
}


2018-05-28 11:42:46 weixin_33860553 阅读数 25

字符串截取,调用系统方法

 let testStr = "hello world"
    //这种方法和swift3.2 类似
 let index1 = testStr.index(testStr.endIndex, offsetBy: -5) 
 let test1 = String(testStr.suffix(from: index1))
 //test1 = "hello" 
        
 let index2 = testStr.index(testStr.startIndex, offsetBy: 5)
 let test2 = String(testStr.prefix(upTo: index2))//
 //test1 = "world" 
 //当然你也可以这样,是不是更简洁了
 let test3 = String(testStr.suffix(5))
 //test3 = "hello" 
 let test4 = String(testStr.prefix(5))
 //test3 = "world"       
 let subString = (testStr as NSString).substring(with: NSMakeRange(2,3))
 //subString = "llo"

字符串拼接

# 字符串拼接很简单
let test1 = "hello"
let test2 = "world"
let test = test1 + " " + test2
// test = "hello world"
let index = 2
let testInt = test + "\(index)" 
// testInt = "hello world2"

字符串富文本

let tmpString = "我有很多的很多钱?,哈哈哈!"
let range = NSRange(location: 4, length: (balance as NSString).length)
let attriString = NSMutableAttributedString(string: tmpString)
attriString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor(hex:"#EA4B44"), range: range)
label.attributedText = attriString
# 同时设置多个属性
 let att = [ NSAttributedStringKey.foregroundColor: textColor,
 NSAttributedStringKey.font: UIFont.systemFont(ofSize: textFont), 
 NSAttributedStringKey.backgroundColor: textBgColor]
 attriString.addAttribute(att , range: range)

字符串截取,调用系统方法 swift 3.2 版本:

let sessionId = "this is a test"

let index = sessionId.index(sessionId.endIndex, offsetBy: -2)

let suffix = sessionId.substring(from: index)

最后结果为:“st”

获取开头字符两个:

let sessionId = "this is a test"

let index = sessionId.index(sessionId.startIndex, offsetBy: 2)

let prefix = sessionId.substring(to: index)

获取中间字符两个:

a,笨方法

let sessionId = "this is a test"

let index = sessionId.index(sessionId.startIndex, offsetBy: 5)

let prefix = sessionId.substring(to: index)

let index = sessionId.index(prefix.startIndex, offsetBy: -2)

b,直接用range截取

let subString1 = (swiftString as NSString).substring(with: NSMakeRange(1,3))

Swift 字符串

阅读数 99