在我写的一个程序中,我需要检查一个角色是否是一个空格("")。目前将此作为条件,但它不起作用。有任何想法吗?提前谢谢。
for(var k = indexOfCharBeingExamined; k < lineBeingExaminedChars.count; k++){
let charBeingExamined = lineBeingExaminedChars[lineBeingExaminedChars.startIndex.advancedBy(k)];
//operations
if(String(charBeingExamined) == " "){
//more operations
}
}
答案 0 :(得分:3)
以下代码适用于我。请注意,使用&#39; for#39;迭代字符串中的字符会更容易。 (下面的第二个例子):
var s = "X yz"
for var i = 0; i < s.characters.count; i++ {
let x = s[s.startIndex.advancedBy(i)]
print(x)
print(String(x) == " ")
}
for c in s.characters {
print(c)
print(String(c) == " ")
}
答案 1 :(得分:1)
<强>字符串:强>
let origin = "Some string with\u{00a0}whitespaces" // \u{00a0} is a no-break space
<强> Oneliner:强>
let result = origin.characters.contains { " \u{00a0}".characters.contains($0) }
另一种方法:
let spaces = NSCharacterSet.whitespaceCharacterSet()
let result = origin.utf16.contains { spaces.characterIsMember($0) }
<强>输出:强>
print(result) // true
不确定你想用空格做什么,因为它可能会更简单一点。
答案 2 :(得分:1)
下面的代码是我如何用Swift中的函数方法解决这个问题。我做了一个扩展(实际上是两个),但你可以很容易地把这个函数的内容用到其他地方。
{{1}}
答案 3 :(得分:0)
只需在代码中进行更改“” -> “ \ u {00A0}”
for(var k = indexOfCharBeingExamined; k < lineBeingExaminedChars.count; k++){
let charBeingExamined = lineBeingExaminedChars[lineBeingExaminedChars.startIndex.advancedBy(k)];
if(String(charBeingExamined) == "\u{00A0}"){
//more operations
}
}
答案 4 :(得分:0)
要仅测试空白:
if collide:
ball_x -= ball_x_change
要同时测试空格和空字符串:
if collide:
ball_x -= ball_x_change
ball_x_change = -ball_x_change