Как преобразовать массив в стиле массива в массив

Я предпочитаю, чтобы прослушиватели событий были развернуты модульной функцией, а не сценарием прослушивателя событий уровня document. Итак, мне нравится ниже. Обратите внимание: вы не можете переадресовать элемент с одним и тем же прослушивателем событий, поэтому не беспокойтесь о прикреплении слушателя более одного раза - только один палец.

var iterations = 4;
var button;
var body = document.querySelector("body");

for (var i = 0; i < iterations; i++) {
    button = document.createElement("button");
    button.classList.add("my-button");
    button.appendChild(document.createTextNode(i));
    button.addEventListener("click", myButtonWasClicked);
    body.appendChild(button);
}

function myButtonWasClicked(e) {
    console.log(e.target); //access to this specific button
}

-3
задан ayaio 28 March 2019 в 12:39
поделиться

4 ответа

Вы можете пройти строку с двумя указателями и найти символы между двумя двойными кавычками (или любым другим символом по вашему выбору):

func substrings(of str: String, between char: Character) -> [String] {
    var array = [String]()

    var i = str.startIndex

    while i < str.endIndex {
        while i < str.endIndex, str[i] != char {
            i = str.index(after: i)
        }

        if i == str.endIndex { break }

        i = str.index(after: i)

        var j = i

        while j < str.endIndex, str[j] != char { 
            j = str.index(after: j) 
        }

        guard j < str.endIndex else { break }

        if j > i { array.append(String(str[i..<j])) }

        i = str.index(after: j)
    }

    return array
}

И вот несколько вариантов использования:

let s1 = "\"OneV\", \"TwoV\", \"ThreeV\""
substrings(of: s1, between: "\"") //["OneV", "TwoV", "ThreeV"]

let s2 = "\"OneV\", \"TwoV\", \"Thr"
substrings(of: s2, between: "\"") //["OneV", "TwoV"]

let s3 = "|OneV|, |TwoV|, |ThreeV|"
substrings(of: s3, between: "|") //["OneV", "TwoV", "ThreeV"]

let s4 = "abcdefg"
substrings(of: s4, between: ",") //[]
0
ответ дан ielyamani 28 March 2019 в 12:39
поделиться

Чтобы разбить строку на массив, вы можете использовать

string.split(separator: ",")

. Это приведет к изменению строки с "1,2,3,4,5" на ["1", "2", " 3" , "4", "5"]

0
ответ дан Salvadorio 28 March 2019 в 12:39
поделиться

Попробуйте:

let aString = " \"OneV\", \"TwoV\", \"ThreeV\" "  
let newString = aString.replacingOccurrences(of: "\"", with: "")
let stringArr = newString.components(separatedBy: ",")
print(stringArr)

Если жало не содержит " внутри строки, тогда

let aString = "OneV,TwoV,ThreeV"  
let stringArr = aString.components(separatedBy: ",")
print(stringArr)
0
ответ дан Faysal Ahmed 28 March 2019 в 12:39
поделиться

Свифт

let str = "\"OneV\", \"TwoV\", \"ThreeV\""
let ary = str.components(separatedBy: ",")
0
ответ дан SodaGun Legendary 28 March 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: