简体   繁体   English

字符串数组中的索引号Swift

[英]index number from Array of Strings Swift

I need to check if the index number of a string is divisible by 2. 我需要检查字符串的索引号是否可以被2整除。

Here is what I need to do: 这是我需要做的:

I have a string 0BCB7A0D87AD101B500B I need to remove all "0" characters from the string, but only if they are at an odd number in the string. 我有一个字符串0BCB7A0D87AD101B500B,我需要从字符串中删除所有“ 0”字符,但前提是它们在字符串中为奇数。 I need to break it down as follows 我需要将其分解如下

0B|CB|7A|0D|87|AD|10|1B|50|0B 0B | CB | 7A | 0D | 87 | AD | 10 | 1B | 50 | 0B

and only remove the "0" if it is the first character in the pair. 并仅删除“ 0”(如果它是该对中的第一个字符)。

B|CB|7A|D|87|AD|10|1B|50|B 乙| CB | 7A | d | 87 | AD | 10 | 1B | 50 |乙

Then put the string back together 然后把绳子放回去

BCB7AD87AD101B50B BCB7AD87AD101B50B

This code doesn't work, but this is how I am looking at doing it. 该代码不起作用,但这就是我正在考虑的方式。 I'm breaking up the string into an array: 我将字符串分解成一个数组:

   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)
            }
        }

    }

I just can't divide or get the index number of the letter/string in the array. 我只是无法分割或获取数组中字母/字符串的索引号。

This would work, it uses a separate variable ( index ) to keep track of the index: 这将起作用,它使用一个单独的变量( 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)

A functional approach to the problem 解决问题的实用方法

// 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)

Thank ou for your code. 感谢您的代码。 I was able to adjust it to remove at the right points. 我能够对其进行调整以在正确的位置将其删除。

var characters = Array("0BCB7A0D87AD101B500B") var个字符= Array(“ 0BCB7A0D87AD101B500B”)

    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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM