我需要检查一个字符串的索引号是否可以被2整除。
以下是我需要做的事情:
我有一个字符串0BCB7A0D87AD101B500B 我需要删除所有" 0"字符串中的字符,但仅限于字符串中的奇数。 我需要将其分解如下
0B | CB | 7A | 0D | 87 | AD | 10 | 1B | 50 | 0B
并且仅删除" 0"如果它是该对中的第一个字符。
乙| CB | 7A | d | 87 | AD | 10 | 1B | 50 |乙
然后将字符串重新组合在一起
BCB7AD87AD101B50B
这段代码不起作用,但我正在考虑这样做。我将字符串分解为数组:
var characters = Array("0BCB7A0D87AD101B500B")
for letter in characters {
if characters(index: Int) % 2 != 0 { // if index has a remainder after being divided by 2
if letter == "0"{
characters.removeAtIndex(index: Int)
}
}
}
我只能分割或获取数组中字母/字符串的索引号。
答案 0 :(得分:2)
这样可行,它使用单独的变量(index
)来跟踪索引:
var characters = Array("0BCB7A0D87AD101B500B")
var newCharacters = Array<Character>()
var index = 0
for letter in characters {
if index % 2 == 1 || letter != "0" {
newCharacters.append(letter)
}
index++
}
var newString = String(newCharacters)
答案 1 :(得分:1)
解决问题的功能方法
// zip each character with the index (enumerate)
let charsWithIndex = enumerate("0BCB7A0D87AD101B500B")
// filter away the unwanted characters (filter) and get rid of the indexes (map)
let filteredCharacters = filter(charsWithIndex) { index, char in !(char == "0" && index % 2 == 0) }.map { String($0.1) }
// put the string back together (join)
let filteredString = "".join(filteredCharacters)
答案 2 :(得分:0)
感谢您的代码。我能够调整它以便在正确的位置移除。
var characters = Array(&#34; 0BCB7A0D87AD101B500B&#34;)
var newCharacters = Array<Character>()
var index = 1
for letter in characters {
if index % 2 == 0 {
newCharacters.append(letter)
}
if index % 2 != 0 && letter != "0" {
newCharacters.append(letter)
}
index++
}
var newString = String(newCharacters)