来自String of Strings Swift的索引号

时间:2015-08-12 15:03:13

标签: arrays string swift indexing split

我需要检查一个字符串的索引号是否可以被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)
            }
        }

    }

我只能分割或获取数组中字母/字符串的索引号。

3 个答案:

答案 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)