您的位置:首页 > 移动开发 > Swift

Swift基础(二):运算符、字符串和字符、数组、集合、字典

2016-05-22 20:24 597 查看
目录:

1.断言
2.运算符
3.字符串和字符
4.集合类型:数组,集合,字典

import UIKit

//1.断言
var varInt =5;
assert(varInt>0,"varInt cann't be less than zero!");

//2.运算符
let letValueInt =5;
let letValueInt2 = -letValueInt;//一元负号:'-'
//空合运算符??是a!=nil?a!:b的缩写
let letStr ="big";
var varStr:String?;
var letStrVal =varStr ??
letStr;
varStr ="hasVal";
var letStrVal2 =varStr ??
letStr;
//闭区间运算符
for valin
1...9
{
    print(val*2);
}
//半开区间运算符
for valin
1..<9
{
    print(val*2);
}

//3.字符串和字符
let strArray:[Character] = ["a","b","c"];//字符数组
for chValin
strArray
{
    print(chVal);
}
let letStr1 ="sdfgd?";
//遍历string
for chValin
letStr1.characters
{
    print(chVal);
}
//遍历string,indices:返回索引,输出:sdfgd?
for indexin
letStr1.characters.indices
{
    print(letStr1[index]);
}
var strVal ="abc";
let ch:Character ="!";
strVal.append(ch);
strVal =strVal +
"test";

let letStrTst ="Good evening!";
letStrTst[letStrTst.startIndex];
//successor()后一个索引
letStrTst[letStrTst.startIndex.successor()];
//predecessor()前一个索引
letStrTst[letStrTst.endIndex.predecessor()];
//advancedBy(int)从当前索引开始第N个索引
letStrTst[letStrTst.startIndex.advancedBy(5)];

//insert:插入一个字符
var strVal2 ="hello mac!"
strVal2.insert("?", atIndex:strVal2.endIndex);
//insertContentsOf:插入一个字符串
strVal2.insertContentsOf("--Steve.".characters,
at: strVal2.endIndex);
//removeAtIndex:删除一个字符
strVal2.removeAtIndex(strVal2.endIndex.predecessor());
strVal2;
//removeRange:删除指定范围的字符
let lerRange =strVal2.startIndex..<strVal2.startIndex.advancedBy(6);
strVal2.removeRange(lerRange);

//字符串比较:相等用==,前缀比较,后缀比较
let strArray2 = [
    "I love ios",
    "I love swift",
    "We love ios"
];
//hasPrefix:前缀包含“I”的个数
var varCnt =0;
for strValin
strArray2
{
    if strVal.hasPrefix("I")
    {
        varCnt++;
    }
    
}
varCnt;//2个
//hasSuffix:前缀包含“I”的个数
varCnt =0;
for strValin
strArray2
{
    if strVal.hasSuffix("swift")
    {
        varCnt++;
    }
    
}
varCnt;//1个

//4.集合类型:数组,集合,字典
//4.1数组
var varArrayInt = [Int]();
print("count:\(varArrayInt.count)");
varArrayInt.append(3);
varArrayInt.append(67);
print("count:\(varArrayInt.count)");
varArrayInt = [];//重置为空数组
print("count:\(varArrayInt.count)");

var varArrayDouble1 = [1.0,2.0,3.0];//初始化
var varArrayDouble2 = [Double](count:3, repeatedValue:4.0);
var varArrayDouble3 =Array(count:
4, repeatedValue:7.99);
var varArrayDouble4 =varArrayDouble1 +
varArrayDouble3;//+号组合数组

var varArrayString2 = ["c","vb"];
varArrayString2.append("c++");
varArrayString2+=["c#"];
varArrayString2+=["java","javascript"];
var varArrayItem =varArrayString2[2];
varArrayString2[3] ="objective-c";
var isEmpty =varArrayString2.isEmpty;//判断是否为空
varArrayString2[2...3] = ["swift","python"];//替换
varArrayString2;
varArrayString2.insert("ruby", atIndex:3);//insert:插入项
varArrayString2.removeAtIndex(0);//移除某项
varArrayString2.removeFirst();
for strin
varArrayString2//遍历
{
    print(str);
}
for (index,value)in
varArrayString2.enumerate()//如果我们同时需要每个数据项的值和索引值
{
    print("item:\(index),value:\(value)");//输出:0:swift
1:ruby......
}
//4.2集合set
var varSetInt =Set<Int>();
varSetInt.insert(3);
varSetInt = [];
var varSetString:Set<String> = ["str1","str2","str3"];//初始化
var varSetString2:Set = ["str1","str2","str3"];//等同于初始化
if !varSetString.isEmpty//isEmpty:是否为空
{
    varSetString.insert("str4");
    print(varSetString.count);
}
ifvar varRet =
varSetString.remove("str4")//remove:返回被删除的值,否则返回Nil
{
    print("\(varRet) is removed!");
}
ifvarSetString.contains("str3")//contains:是否包含此键
{
    print("contains this string!");
}
for itemValin
varSetString//for in遍历
{
    print(itemVal);
}
for itemValin
varSetString.sort()//swift set默认没有排序,用sort()排序
{
    print(itemVal);
}
//基本集合操作



var varSetInt1:Set<Int> = [1,2,3,4,5];
var varSetInt2:Set<Int> = [4,5,6,7];
varSetInt1.intersect(varSetInt2);//相交
varSetInt1.exclusiveOr(varSetInt2);//异或
varSetInt1.union(varSetInt2);//合并
varSetInt1.subtract(varSetInt2);//排除
var varSetInt3:Set<Int> = [1,2,3,4,5];
var varSetInt4:Set<Int> = [6,7,8];
varSetInt3.isSubsetOf(varSetInt1);//isSubsetOf是否为子集
varSetInt3.isStrictSubsetOf(varSetInt1);//isStrictSubsetOf是否为真子集(不能相等)
varSetInt3.isSupersetOf(varSetInt1);//isSupersetOf是否为父集
varSetInt3.isStrictSupersetOf(varSetInt1);//isStrictSupersetOf是否为父集&&不能相等
varSetInt3.isDisjointWith(varSetInt1);//isDisjointWith方法来判断两个集合是否完全不同
varSetInt3.isDisjointWith(varSetInt4);//完全不相同,没有相同的值

//4.3字典
var varDic = [Int:String]();//初始化一个空的int:string字典
varDic[4] ="str1";
varDic;
varDic = [:];//赋值空
var varDic1:[Int:String] = [2:"str1",45:"str2"];
varDic1[6] ="str3";
print(varDic1.count);//count
if !varDic1.isEmpty//isEmpty
{
    print("not null!");
}
//更新值
varDic1[6] ="str4";
//updateValue返回旧值,否则返回nil
iflet oldVal =
varDic1.updateValue("str5", forKey:6)
{
    print("old val:\(oldVal)");
}
print(varDic1.count);
//移除值
varDic1[6] =nil;
print(varDic1.count);
varDic1[6] ="str5";
print(varDic1.count);
iflet letVal =
varDic1.removeValueForKey(6)//返回被删除的值,否则返回nil
{
    print("deleted val:\(letVal)");
}
print(varDic1.count);
//遍历
for (varKey,varVal)in
varDic1
{
    print("\(varKey),\(varVal)");
}
for varValin
varDic1.values.sort()//单独遍历值或键,sort()可排序
{
    print("\(varVal)");
}
let varKey = [Int](varDic1.keys);//用键初始化一个int数组
let varVal = [String](varDic1.values);//用值初始化一个string数组
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: