it-swarm-tr.com

Belirli bir karaktere bölünerek dizgeyi nasıl bölerim?

Bu dizgeye sahibim

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

JavaScript kullanarak, bunu ayrıştırmanın en hızlı yolu nedir?

var name = "john smith";
var street= "123 Street";
//etc...
478
ctrlShiftBryan

JavaScript’lerin String.prototype.split fonksiyonlarıyla:

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.
767
Zach

JQuery'e ihtiyacınız yok.

var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
48
Grant Wagner

ECMAScript6 ES6 'a göre temiz yol dizileri yok ediyor:

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

Giriş dizesinde fazladan öğeler olabilir. Bu durumda, geri kalanı için bir dizi almak için geri kalan işleci kullanabilirsiniz ya da sadece görmezden gelin: 

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"]

Değerler için salt okunur bir referans varsayalım ve const bildirgesini kullandım.

ES6'nın tadını çıkarın!

28
Vahid Hallaji

Bu en basit yol olmasa da, bunu yapabilirsiniz:

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 Güncellemesi, yıkımı kullanarak

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
Torsten Walter

Bu, jQuery için gerçekten uygun bir görev olmadığından, JavaScript substring veya split 'e bakmak isteyeceksiniz.

12
John Sheehan

Spliter bulunursa o zaman sadece 

Böl onu 

else dizgeyi döndür

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
BJ Patel

iyi, en kolay yol şöyle bir şey olurdu:

var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
5
Dan

Gibi bir şey:

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

Muhtemelen en kolay olacak

4
Steve g

Metni bölmek için split kullanabilirsiniz.

Alternatif olarak, aşağıdaki gibi match işlevini de kullanabilirsiniz.

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

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

Regex [^~]+, ~ dışındaki tüm karakterlerle eşleşir ve eşleşmeleri bir dizide döndürür. Daha sonra kibritleri ondan çıkarabilirsiniz.

3
Tushar

Zach bu hakka sahipti ... yöntemini kullanarak görünüşte "çok boyutlu" bir dizi de yapabilirdiniz .. JSFiddle http://jsfiddle.net/LcnvJ/2/ 'de hızlı bir örnek oluşturdum.

// 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(",");
2
Billy Hallman

Virgüllerle ilgili soru bölme işlemi bu soruya kopyalandığından, bunu buraya ekleyin.

Bir karaktere bölmek ve aynı zamanda bu virgülle olan karakteri takip edebilecek fazladan boşlukla da ilgilenmek istiyorsanız, replace, sonra split kullanabilirsiniz:

var items = string.replace(/,\s+/, ",").split(',')
0

Plain Javascript’i deneyin

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

 var ar= [url,statu] = window.location.href.split("=");
0
Hari Lakkakula

Bu string.split("~")[0]; işlemi halleder.

kaynak: String.prototype.split ()


Köri ve fonksiyon kompozisyonu kullanan başka bir fonksiyonel yaklaşım.

Yani ilk şey bölünmüş işlev olacaktır. Bu "john smith~123 Street~Apt 4~New York~NY~12345" 'u bu ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"] içine dahil etmek istiyoruz.

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

Şimdi uzman splitByTilde fonksiyonumuzu kullanabiliriz. Örnek:

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

İlk elemanı elde etmek için list[0] operatörünü kullanabiliriz. Bir first işlevi oluşturalım:

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

Algoritma: kolon tarafından bölün ve ardından verilen listenin ilk elemanını elde edin. Böylece, bu __ final getName fonksiyonumuzu oluşturmak için oluşturabiliriz. compose ile bir reduce işlevi oluşturma:

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

Ve şimdi splitByTilde ve first işlevlerini oluşturmak için kullanın.

const getName = compose(first, splitByTilde);

let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
0
leandrotk

JavaScript: String Array JavaScript Split'e dönüştürme

    var str = "This-javascript-tutorial-string-split-method-examples-tutsmake."
 
    var result = str.split('-'); 
     
    console.log(result);
     
    document.getElementById("show").innerHTML = result; 
<html>
<head>
<title>How do you split a string, breaking at a particular character in javascript?</title>
</head>
<body>
 
<p id="show"></p> 
 
</body>
</html>

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

0
Developer

Bu kodu kullan ------ 

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

}
0