Как разделить строку, прерывая ее на определенном символе?

У меня есть эта строка

'john smith~123 Street~Apt 4~New York~NY~12345'

Используя JavaScript, какой самый быстрый способ разобрать эту строку на

var name = "john smith";
var street= "123 Street";
//etc...
Решение

С помощью функции JavaScript String.prototype.split:

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

var fields = input.split('~');

var name = fields[0];
var street = fields[1];
// etc.
Комментарии (0)

Вам не нужен 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];
Комментарии (2)

По данным ECMAScript6 ЕС6 чистый путь разрушения массивов:

в <!-- начинается фрагмент с JS скрывать: ложные консоли: правда Бабель: правда --&ГТ;

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

в <!-- конец фрагмента --&ГТ;

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

в <!-- начинается фрагмент с JS скрывать: ложные консоли: правда Бабель: правда --&ГТ;

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

const [name, street, ...others] = input.split('~');

console.log(name); // john smith
console.log(street); // 123 Street
console.log(others); // ["Apt 4", "New York", "NY", "12345"]

в <!-- конец фрагмента --&ГТ;

Мне оставалось только для чтения ссылка для значений и используется константный декларацию.

Наслаждайтесь ЕС6!

Комментарии (2)

Хотя это не самый простой способ, вы могли бы сделать это:

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
Комментарии (2)

Вы'захотите рассмотреть JavaScript'ы substr или split, так как это не совсем подходящая задача для jQuery.

Комментарии (0)

ну, самый простой способ будет что-то вроде:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
Комментарии (0)

Если сплитер нашли тогда только

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

еще вернуть одной строкой

&ГТ; SplitTheString функции(ResultStr) { &ГТ; если (ResultStr != значение null) { &ГТ; ВАР SplitChars = '~'; &ГТ; если (ResultStr.метод indexOf(SplitChars) &ГТ;= 0) { &ГТ; ВАР DtlStr = ResultStr.сплит(SplitChars); &ГТ; ВАР имя = DtlStr[0]; &ГТ; ВАР ул = DtlStr[1]; &ГТ; } &ГТ; } &ГТ; }

Комментарии (0)

Вы можете использовать "Split", чтобы разбить текст.

В качестве альтернативы, вы можете также использовать "матч" как следовать

в <!-- начинается фрагмент: на JS скрыть: ложь --&ГТ;

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

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

в <!-- конец фрагмента --&ГТ;

Регулярное выражение [^~]+ будет соответствовать все символы, за исключением ~ и вернуться к Играм в массив. После этого можно извлечь матчей от него.

Комментарии (2)

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

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

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

Комментарии (1)

Зак был прав.. с помощью его метода можно также сделать, казалось бы, что "многомерный" в массив.. я создал небольшой пример на JSFiddle http://jsfiddle.net/LcnvJ/2/

// array[0][0] will produce brian
// array[0][1] will produce james

// array[1][0] will produce kevin
// array[1][1] will produce haley

var array = [];
    array[0] = "brian,james,doug".split(",");
    array[1] = "kevin,haley,steph".split(",");
Комментарии (0)

Эта строка.Сплит (на"~", У)[0];` получает вещи сделано.

источник: строка.прототип.сплит()


Еще один функциональный подход с использованием Карри и функция композиции.

Поэтому первым делом будет разделить функции. Мы хотим сделать это в "Джон Смит~123 улица~кв. 4~Нью-Йорк~Нью-Йорк~12345" В В [и quot;Джон Смит и quot;, "по 123 улицы и quot;, то "КВ 4 и quot;, то "Нью-Йорком" В, С "Нью-Йорк" В, С "12345", у]

const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');

Так что теперь мы можем использовать наш специализированный splitByTilde функция. Пример:

splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]

Чтобы получить первый элемент, который мы можем использовать список[0] оператор. Позвольте's сборки на первый функция:

const first = (list) => list[0];

Алгоритм: разделенный двоеточием, а затем получить первый элемент данного списка. Поэтому мы можем подготовить этих функций для построения функции нашего окончательного метод getname. Строительство сочинять функции уменьшить:

const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);

И теперь, используя его для создания splitByTilde и первый функции.

const getName = compose(first, splitByTilde);

let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
Комментарии (0)

Попробовать в обычный JavaScript

 //basic url=http://localhost:58227/ExternalApproval.html?Status=1

 var ar= [url,statu] = window.location.href.split("=");
Комментарии (0)

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

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

}
Комментарии (0)

Поскольку расщепление на вопрос запятые дублируется на этот вопрос, добавив Это здесь.

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

ВАР элементов = строка.заменить (я/, и\S+/, &;, то").сплит(&#39;,&#39;)

Комментарии (0)

JavaScript-кода: преобразование строки в массив JavaScript в Сплит

в <!-- начинается фрагмент с JS скрывать: ложные консоли: правда Бабеля: ложь --&ГТ;

    var str = "This-javascript-tutorial-string-split-method-examples-tutsmake."

    var result = str.split('-'); 

    console.log(result);

    document.getElementById("show").innerHTML = result; 


How do you split a string, breaking at a particular character in javascript?



<p id="show"></p> 


в <!-- конец фрагмента --&ГТ;

https://www.tutsmake.com/javascript-convert-string-to-array-javascript/

Комментарии (0)