现在的位置: 首页 > 综合 > 正文

Swift–字符串和字符(二)

2018年05月12日 ⁄ 综合 ⁄ 共 2696字 ⁄ 字号 评论关闭

Swift的字符串类型表示的字符值以特定顺序的集合。每个字符的值代表一个Unicode字符。您可以通过遍历该字符串用for-in循环访问字符串中的单个字符值:

for character
in "Dog!"{

println(character)

}
//D 5
//o 6
//g 7 //!
8 //

创建一个单独的字符串常量或者变量可以通过一个字符类型的注释来完成:

let yenSign:
Character = "¥"

 

字符计数

 

如果我们想要计算一个字符串里有多少字符,我们可以通过countElements函数来实现

.    let unusualMenagerie=
"Koala , Snail ,Penguin , Dromedary "

.     println("unusualMenagerie has
\(countElements(unusualMenagerie))characters")

.      // prints "unusualMenagerie has 40 characters"

 

字符和字符串的拼接

字符串和字符的拼接可以通过(+)来实现

  var
instruction=
"look over"

 instruction+=
string2

//instruction now equals "look over there

  var
welcome= "good morning"

 welcome+=
character1

  // welcomenow equals "good morning!"

 

字符串插入

字符串插值是一种由包括他们在字符串中的值从字面常量,变量,常量和表达式的组合构造一个新的String值。您插入字符串字面量中的每一项被包裹在一对圆括号,以反斜线前缀:

.    let multiplier
= 3

  let
message = "\(multiplier)times 2.5 is
\(Double(multiplier) *
2.5)"

  // message is "3 times 2.5 is 7.5"

在上面的例子中,乘数的值插入到一个字符串作为\multiplier)。此占位符替换为乘数当字符串插值计算来创建一个实际的字符串的实际值。

乘数的值也是一个更大的表达式后的字符串中的一部分。该表达式计算双(multiplier*2.5的值,并将结果插入(7.5)到字符串中。在这种情况下,表达式写为\(双人间(multiplier*2.5),当它被包含在里面的字符串文字。

 

字符串比较

Swift提供了三种方法来比较两个字符串值:字符串相等,前缀相等和后缀相等。

字符串相等:

.    let quotation
= "We're a lot alike, you and I."

.     let
sameQuotation =
"We're a lot alike, you and I."

.      if
quotation ==
sameQuotation
{

.    println("These two strings are considered equal")

}
//prints "These two strings are considered equal"

要检查一个字符串是否有一个特定的字符串前缀或后缀,可使用字符串的hasPrefix和hasSuffix方法,这两种接受一个类型为String的参数,并返回一个布尔值。这两种方法执行的基本字符串和前缀或后缀字符串之间的字符逐个字符比较。

下面的例子中考虑代表从莎士比亚的罗密欧与朱丽叶的第一个两幕场景位置的字符串数组:

.    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'smansion",

.      "Act 1 Scene 5: The Great Hall in Capulet'smansion",

.      "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"

.      ]

您可以使用romeoAndJuliet的hasPrefix方法:

var act1SceneCount
= 0

 

for scene
in romeoAndJuliet
{

    if
scene
.hasPrefix("Act 1 ") {

        ++act1SceneCount

    }

}
println("Thereare
\(act1SceneCount)
scenes in Act 1"
)

// prints "There are 5 scenes in Act 1"

 

同理, hasSuffix方法如下

var mansionCount
= 0

var cellCount
= 0

for scene
in romeoAndJuliet
{

if scene.hasSuffix("Capulet'smansion") {

++mansionCount
}

else if scene.hasSuffix("FriarLawrence's cell") {

++cellCount}

}

.      println("\(mansionCount)
mansionscenes; \(cellCount)
cell scenes")

.      // prints "6 mansion scenes; 2 cell scenes"

 

字符串大写和小写

你可以通过一个字符串的uppercaseString和lowercaseString属性来实现大写或小写:

.     let
normal = "Couldyou help me, please?"

.      let
shouty = normal.uppercaseString

.      // shouty is equal to "COULD YOU HELP ME,PLEASE?"

.      let
whispered =
normal
.lowercaseString

.      // whispered is equal to "could you help me,please?"

 

抱歉!评论已关闭.