swift 初见-4运算符与字符串操作

// Playground - noun: a place where people can play

import UIKit
//import Foundation

var str = "Hello, playground"
//swift 新运算符 Nil Coalescing Operator  (nil聚合运算符)  二元运算符  它是为可选型数据来设计的,通常用在解包的过程中
// 示例:  a??b ---> a!=nil? a! : b (a不为空就解包,否则返回默认值b)  a必须是optional类型 ,b类型必须和a解包后的类型是一致的
// 实例:
var name:String?
name="andy"

// 需要注意的时 name != nil 中!=与前后都有个空格否则会报错的,假如没有空格 name!变成了解包
// 无空格时:error: type ‘()‘ does not conform to protocol ‘BooleanType‘
if name != nil{
    println("hello,\(name)")
    // 这里加!号,前面讲过的
    println("hello"+String(name!))
}else
{
    println("hello,kim")
}

// 简化if代码-1:
// 开发技巧:在元素前后分别留出一个空格间隔前后代码或符号
let myName:String=name != nil ? name! : "kim"
println("hello"+myName)

// 简化if代码-2
let myNames:String=name ?? "kim"
println("hello"+String(myNames)) //这样就保证了myNames始终是个有意义的值

// 区间运算符 Range Operator 常用forin循环连用

// 闭区间 [a,b] ---->a...b  //三点
// 前闭后开 [a,b)---->a..<b //两点

for indexs in 1...10
{
    indexs
 // indexs=10   error:error: cannot assign to ‘let‘ value ‘indexs‘ ,默认常量
}

for indexs in 1..<10
{
    indexs
    // indexs=10   error:error: cannot assign to ‘let‘ value ‘indexs‘ ,默认常量
}

//Logical Operator
// !a a&&b  a||b     注意 a & b , a | b这是位运算,不是逻辑运算

// String Mutability
// var 声明的都是可变字符串 ,let 为不可变
// 遍历字符串
for c in str
{
    println(c) //c为Character型
}

// Character 类型
var ch:Character="!"  //写个字符会报错
str.append(ch)

println(str)
 // str +=ch  //这样是不能的,类型不匹配 ,两个字符串可以
countElements(str)  //计算长度,可以智能的把中文当做一个字符(底层语言中中文为unico符处理起来麻烦)
var str1:NSString=str
str1.length
var str2="hello\u{1F496}"
countElements(str2) //长度为6
var str3:NSString="hello\u{1F496}"
str3.length   // 长度为7,在这里可以发现swift处理字符串时比OC更具优势

let SFInt:Int = 2
let SFDouble:Double = 2;
let SFBool:Bool=true;
let SFTuple:(Int,Int) = (2,3) //元组
let SFOptional:Int?=nil
let SFCharaceter:Character = "!"

println("Bool:\(SFBool) \n Tuple:\(SFTuple)") // \n 换行

//String Comparing
let stringA="abc"
let stringB="abc"
stringA==stringB
let stringC="abd"
let stringD="d"
stringA<stringC
stringA<stringD

let array=["abc","abc","abc","abc"]
for strs in array
{   // strs.hasSuffix("c")
    if(strs.hasPrefix("a"))
    {
     println("String=\(strs)")
    }
}

// 导入OC中得框架可以使用原来OC中得其他方法
  stringA.capitalizedString
  stringA
  stringA.uppercaseString
  stringA.lowercaseString
  stringA

// trim 操作  //对字符串的头尾进行截取,对中间是没有作用的
var stringE=" a    b   b   c       "
stringE.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())  //该方法来自OC
stringE
stringE.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:"a")) // 不是从头开始的,无法截取
stringE.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:" a")) //注意是两个字符, a前面有个空格
// split
stringE.componentsSeparatedByString(" ")

stringE.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"b"))

//join
var stringF="-"
stringF.join(["1","2","3"])

// range
stringE.rangeOfString("b")  //返回的是可选型 ,返回第一个的位置
// 最新的swift语法  可能  rangeOfString返回的是元组(22,4),不再是23..<27的range ,这是网友提供的并没有经过验证!!!!!!!!!!!
// 反向收索
stringE.rangeOfString("b", options: NSStringCompareOptions.BackwardsSearch)

// 忽略大小写
stringE.rangeOfString("b", options: NSStringCompareOptions.CaseInsensitiveSearch)

// String类型有个 String.Index索引
stringE.startIndex
stringE.endIndex

// < >为swift中泛型的概念
let stringRange = Range<String.Index>(start:stringE.startIndex,end:stringE.endIndex)

let startIndex=str.startIndex  // 注意它的0并不是整型0,而是String.Index类型
// 整型10 表示向后走10步
let endIndex:String.Index=advance(stringE.startIndex, 10)
let seachIndex=Range<String.Index>(start: startIndex, end: endIndex)

// 固定范围内搜索
stringE.rangeOfString("b", options:NSStringCompareOptions.CaseInsensitiveSearch, range: seachIndex)

// subString
var toIndex=advance(startIndex, 10)
stringE.substringToIndex(toIndex)
var fromIndex=advance(startIndex,13)
stringE.substringFromIndex(fromIndex)
// 返回的是从10 - 13 不包括第13个字符
stringE.substringWithRange(Range<String.Index>(start: toIndex, end: fromIndex))

//insert
var insertIndex=advance(stringE.startIndex,5)
stringE.substringFromIndex(fromIndex)
//stringE.insert("!", atIndex: insertIndex)
// stringE.removeAtIndex(insertIndex)
// stringE.replaceRange(<#subRange: Range<String.Index>#>, with: <#C#>)
// stringE.removeRange(<#subRange: Range<String.Index>#>)
时间: 2024-08-07 16:59:21

swift 初见-4运算符与字符串操作的相关文章

Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 协议和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实

The Swift Programming Language 中文版---Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 接口和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印"Hello, world".在 Swift 中,可以用

Swift的基本运算符

今天学习了Swift语言的最基本的知识,以下是本人的一些认识与小结,希望能帮助更多人的区理解,如有不妥的地方望大家指出,以便及时更正. 基本运算符 运算符是一种特殊的符号或短语,你可以用它来检查,改变,或组合值. 运算符都是一元,二元或者三元: 一元运算符操作单个对象主要有:前缀操作符 (如 -a,!a)和后缀操作符在对象后出现 (如 i++,i--). 二元运算符操作两个对象且在两对象之间,主要有:-,+,*,/,%,<,>,=.(如 a-b, a+b, a*b, a/b, a%b, a&l

初见Python运算符_人生若只如初见

本系列文章是在学习Python的过程中遇到了瓶颈,转到菜鸟教程去体会初见Python的乐趣,完善整体知识框架.加强自我对Python语言的理解以及对Python知识点的掌握.本文来源于:菜鸟教程(学习记录,版权归http://www.runoob.com) Python 3 什么是运算符? 本章节主要说明Python的运算符.举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算

C语言难点1之输入输出,链接,字符串操作

C语言难点1之输入输出,链接,字符串操作 最近发现写了一段时间的C之后,还是有一些点并没有很好的get,我就想总结出来,写个系列博客,自己也好好的整理一下思路.这个系列主要出自三本书:<C专家编程>,<C陷阱和缺陷>,<C和指针>.有兴趣的同学可以好好看一下这几本书,对于打好C语言的基础是个非常不错的几本书. 1 一些输入输出的格式 对应的printf():和scanf()函数:在这里我给出常用的scanf格式码,和printf()函数也是一样的. 2 getchar(

C语言字符串操作总结大全(超详细)

1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1

JavaScript中常见的字符串操作函数及用法汇总

1.字符串转换 字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: ? 1 2 var num= 19; // 19 var myStr = num.toString(); // "19" 你同样可以这么做: ? 1 2 var num= 19; // 19 var myStr = String(num); // "19" 或者,再简单点儿: ? 1 2 var num= 19; // 19 var myStr =

JavaScript中的字符串操作

JavaScript中的字符串操作 一.概述    字符串在JavaScript中几乎无处不在,在你处理用户的输入数据的时候,在读取或设置DOM对象的属性时,在操作cookie时,当然还有更多....JavaScript的核心部分提供了一组属性和方法用于通用的字符串操作,如分割字符串,改变字符串的大小写,操作子字符串等.    当前的大部分浏览器也能从强大的正则表达式获益,因为它极大地简化了大量的字符串操作任务,不过它也需要你克服一条有些陡峭的学习曲线.在这里,主要是介绍字符串本身的一些操作,正

Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

Bash 支持很多运算符,包括算数运算符.关系运算符.布尔运算符.字符串运算符和文件测试运算符. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. 原生的bash到底支持不支持数学计算我不清楚了,不过也这样做到一样的效果: #!/bin/bash val=$(( 2 + 2)) echo 'Total value :'$val val=$[ 2 + 2 ] echo 'Total value :'$val 我想现在版本的bash原生是支