Преобразование строки в объект для использования .map () [duplicate]

Для Ubuntu я использую SSH, но как только я закрываю все, что я начал, заканчивается

. Посмотрите на команду nohup и «& amp;» в конце команды. Вы можете использовать их для команд и скриптов, которые хотите продолжать работать при выходе из оболочки.

В качестве альтернативы мы также имеем мультиплексоры, которые могут создавать сеанс, который сохраняется при выходе из оболочки. nohup и tmux (вот сравнение) довольно известны в этом отношении.

Кстати: если вам нравится такая настройка ... для Ubuntu также возможно подключение к удаленному рабочему столу: tmux является клиентом по умолчанию; он просто нуждается в настройке на клиенте и сервере.

447
задан 1 July 2014 в 17:05

10 ответов

Используйте этот код ------

function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");

}
0
ответ дан 15 August 2018 в 16:58

Зак имел это право. Используя свой метод, вы также могли бы сделать кажущийся «многомерный» массив. Я создал быстрый пример в JSFiddle http://jsfiddle.net/LcnvJ/2/

[F1]
2
ответ дан 15 August 2018 в 16:58

Если Spliter найден, то только

Разделить его

else вернуть Разделитель найден

function SplitTheString(ResultStr) {
    if (ResultStr != null) {
        var SplitChars = '~';
        if (ResultStr.indexOf(SplitChars) >= 0) {
            var DtlStr = ResultStr.split(SplitChars);
            var name  = DtlStr[0];
            var street = DtlStr[1];
        }
    }
}
5
ответ дан 15 August 2018 в 16:58

ну, проще всего было бы что-то вроде:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
5
ответ дан 15 August 2018 в 16:58

Вам не нужен jQuery.

var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
46
ответ дан 15 August 2018 в 16:58
  • 1
    Вам не нужно добавлять регулярное выражение к этой простой замене. Это только сделает его медленнее, если что-нибудь. Вы можете изменить его на кавычки для простой замены строки. – Anish Gupta 14 August 2012 в 16:05
  • 2
    Спасибо за указание, что split принимает регулярное выражение! – phunehehe 7 June 2016 в 14:58

Согласно ECMAScript6 ES6, чистый путь разрушает массивы:

const input = 'john smith~123 Street~Apt 4~New York~NY~12345';

const [name, street, unit, city, state, zip] = input.split('~');

console.log(name); // john smith
console.log(street); // 123 Street
console.log(unit); // Apt 4
console.log(city); // New York
console.log(state); // NY
console.log(zip); // 12345

У вас могут быть дополнительные элементы во входной строке. В этом случае вы можете использовать оператор отдыха для получения массива для остальных или просто игнорировать их:

const input = 'john smith~123 Street~Apt 4~New York~NY~12345';

const [name, street, unit, city, state, zip] = input.split('~');

console.log(name); // john smith
console.log(street); // 123 Street
console.log(unit); // Apt 4
console.log(city); // New York
console.log(state); // NY
console.log(zip); // 12345

Я предположил, только ссылку для значений и использовать объявление const.

Наслаждайтесь ES6!

20
ответ дан 15 August 2018 в 16:58

Вы захотите изучить подстроку или разделение JavaScript, поскольку это не задача, подходящая для jQuery

12
ответ дан 15 August 2018 в 16:58

Что-то вроде:

var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];

Вероятно, будет проще

4
ответ дан 15 August 2018 в 16:58
  • 1
    Нет, вы хотите либо split("~"), либо split(/~/), но не split("/~/"). Последний разделил бы только "John/~/Smith", а не "John~Smith". – Andrew Willems 19 February 2017 в 19:09

Несмотря на то, что это не самый простой способ, вы можете сделать это:

var addressString = "~john smith~123 Street~Apt 4~New York~NY~12345~",
    keys = "name address1 address2 city state zipcode".split(" "),
    address = {};

// clean up the string with the first replace
// "abuse" the second replace to map the keys to the matches
addressString.replace(/^~|~$/g).replace(/[^~]+/g, function(match){
    address[ keys.unshift() ] = match;
});

// address will contain the mapped result
address = {
    address1: "123 Street"
    address2: "Apt 4"
    city: "New York"
    name: "john smith"
    state: "NY"
    zipcode: "12345"
}

Обновить для ES2015, используя деструктурирование

const [address1, address2, city, name, state, zipcode] = addressString.match(/[^~]+/g);

// The variables defined above now contain the appropriate information:

console.log(address1, address2, city, name, state, zipcode);
// -> john smith 123 Street Apt 4 New York NY 12345
16
ответ дан 15 August 2018 в 16:58
  • 1
    Не могли бы вы объяснить, как это работает? – Glycan 17 July 2013 в 04:49
  • 2
    сначала у нас есть строка, разделенная символами «~» и массивом keys. Вторая функция замены использует [^~]+ для соответствия каждой другой части (т. Е. «123 Street», «Apt 4» и т. Д.) И вызывает функцию для каждой части, передавая ее в качестве аргумента. При каждом запуске функция берет первый ключ из массива ключей (также удаляет его с помощью Array.unshift) и назначает ключ и часть объекту адреса. – ewino 5 January 2015 в 13:52

Вы можете использовать split для разделения текста.

В качестве альтернативы вы также можете использовать match следующим образом:

var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);

console.log(matches);
document.write(matches);

Регулярное выражение [^~]+ будет соответствовать всем символам, кроме ~, и возвращать совпадения в массиве. Затем вы можете извлечь из него совпадения.

3
ответ дан 15 August 2018 в 16:58

Другие вопросы по тегам:

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