Swift语言中 String 的一些操作方法

整理自慕课网liuyubobobo老师在《玩儿转Swift》课程中的讲解,在此表示感谢!同时推荐这套视频课程http://www.imooc.com/learn/127

var str = "Welcome to Play Swift! Step by step to learn Swift."

// Range的用法和相关字符串的操作代码片段
 str.rangeOfString(“Step”)  // 字符串片段“Step”所处的字符范围 23..<27, 也即第22~26的范围位置

另举一个更简单的例子:

var s1 = "123456789"

s1.rangeOfString("23”) ->>> {some “1..<3”}, 返回一个类型为NSRange的范围1~2,实际是2~3因为index以0开始计算。

注意此处NSRange,苹果文档解释为

A structure used to describe a portion of a series—such as characters in a string or objects in an NSArray object.

继续, 以下时反向查找,返回NSRange类型

str.rangeOfString("Swift", options: NSStringCompareOptions.BackwardsSearch) ->>> {some 45..<50}

此处options还可以为 CaseInsensitiveSearch,也即大小写不敏感的查找模式

str.startIndex  ->>> 0
str.endIndex   ->>> 51, 此处可理解为该字符串总长度为51,有一共51个字符

let aRange = Range<String.Index>(start:str.startIndex, end:str.endIndex)

以上常量aRange是一个NSRange类型的值, 也即是 0..<51, 表示变量str所指向的字符串的范围

需要注意的是,在Java等语言中,数组和字符串下标index是Int类型,但在Swift,index下标是String.Index类型。

let startIndex:String.Index = str.startIndex
let endIndex:String.Index = advance(str.startIndex, 12) //设置后下标,由前下标后挪12位获得

let searchRange = Range<String.Index>(start:startIndex, end:endIndex) //设置一个range,其实就是0..<10

str.rangeOfString("to", options: NSStringCompareOptions.CaseInsensitiveSearch, range:searchRange) // 在指定的range内搜索字符串to,模式为大小写不敏感,返回在该range内找到的指定字符串的range..,也即 {Some "8..<10"}

时间: 2024-08-05 07:22:21

Swift语言中 String 的一些操作方法的相关文章

在Swift语言中,关于Any,AnyObject,AnyClass的区别与联系

在Swift语言中,协议定义类或结构体应该遵守的变量和方法集合,如下所示,这个一个标准的协议的声明: protocol NSObjectProtocol { func isEqual(object: AnyObject?) -> Bool var hash: Int { get } var superclass: AnyClass? { get } func `self`() -> Self! func isProxy() -> Bool func isKindOfClass(aClas

Java语言中String累的总结

String类 1.Java.lang包简介 java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类: 在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明. 2.String类 Java语言中,字符串是String类的对象: Java语言中,String是引用数据类型: 可以通过使用String类提供的方法来完成对字符串的操作: 创建一个字符串对象之后,将不能更改构成字符串的字符: 每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内

Swift语言中与C/C++和Java不同的语法(五)

这一节将会提到Swift中其他的关于函数的应用,这些内容包括有: 默认参数值和可变参数值.常量参数.返回函数类型和函数嵌套: 一.默认参数值和可变参数值 对默认参数值是指在函数的声明中就已经定义了参数的初值,比如: func sayHelloTo(name:String,greeting:String = "Hi", punctuation:String = "!"){ } 在调用的时候可以是: sayHelloTo(name:"PlayGround&qu

Swift语言中与C/C++和Java不同的语法(二)

这一部分,主要讲Swift中创新的可选型(optionals) 一.概要 可选型是Swift创新的一种新的类型,首先看一下可选型的应用场景: var errorCode : Int = 404 这时候errorCode的值是404,表示此时的错误状态码是404,当产生一种错误的时候就会获得其对应的errorCode, 但是如果没有错误那应该怎么办呢? 在C/C++和Java中我们会给errorCode赋值为0或者是null(其实null也就是0),但是我们怎么能够保证0不是一种错误的状态码呢?

Swift语言中的switch语句的妙用

Swift中的switch语句的类另用法: // 强大的switch语句 var a:Int = 100 switch a { case a where a < 0: println("Negative") case a where a == 0: println("Zero") case a where a > 0: println("Positive") default: println("Unknow") }

C/C++语言中NULL、&#39;\0’和0的区别

注:本文参考了http://blog.csdn.net/mylinx/article/details/6873253及书籍<征服C指针>([日]前桥和弥著). NULL.'\0'和0的值是一样的,都是0,不过它们的表现形式不一样: 1. NULL: 即空指针,不过在C和C++中并不一样.在VS 2013的库文件string.h中可以看到如果定义. 1 /* Define NULL pointer value */ 2 #ifndef NULL 3 #ifdef __cplusplus 4 #d

C语言中static关键字的作用

static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variable void msg()  {     printf("Hello\n"

C语言中sizeof与strlen区别

C语言中sizeof 与strlen 区别 一.本质区别 sizeof 和strlen 有本质上的区别.sizeof 是C 语言的一种单目运算符,如++.--等,并不是函数,sizeof 的优先级为2 级,比/.% 等3 级运算符优先级高,sizeof 以字节的形式给出操作数的存储空间的大小.而 strlen 是一个函数,是由 C 语言 的标准库提供的.strlen 计算的  是字符串的长度. 二.使用区别 1.sizeof sizeof 的操作数可以是数据类型.函数.变量,表达式使用方式为:

C语言中system()函数的用法总结(转)

system()函数功能强大,很多人用却对它的原理知之甚少先看linux版system函数的源码: 1 #include <sys/types.h> 2 #include <sys/wait.h> 3 #include <errno.h> 4 #include <unistd.h> 5 6 int system(const char * cmdstring) 7 { 8 pid_t pid; 9 int status; 10 11 12 if(cmdstri