[英]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.