Aku punya string ini
'john smith~123 Street~Apt 4~New York~NY~12345'
Menggunakan JavaScript, apa cara tercepat untuk mengurai ini ke
var name = "john smith";
var street= "123 Street";
//etc...
Dengan JavaScript String.prototype.split
fungsi:
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.
Menurut ECMAScript6 ES6
, cara yang bersih adalah merusak array:
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
Anda mungkin memiliki item tambahan dalam input string. Dalam hal ini, anda dapat menggunakan seluruh operator untuk mendapatkan array untuk beristirahat atau hanya mengabaikan mereka:
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"]
Aku seharusnya hanya-baca referensi untuk nilai-nilai dan digunakan const
deklarasi.
Nikmati ES6!
Meskipun ini bukan cara yang paling sederhana, anda bisa melakukan hal ini:
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"
}
Update untuk ES2015, menggunakan destructuring
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
Jika Spliter ditemukan maka hanya
Perpecahan itu
lagi kembali string yang sama
fungsi SplitTheString(ResultStr) { jika (ResultStr != null) { var SplitChars = '~'; jika (ResultStr.indexOf(SplitChars) >= 0) { var DtlStr = ResultStr.split(SplitChars); var nama = DtlStr[0]; var jalan = DtlStr[1]; } } }
Anda dapat menggunakan split
untuk membagi teks.
Sebagai alternatif, anda juga dapat menggunakan pertandingan
sebagai berikut
var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);
console.log(matches);
document.write(matches);
Regex [^~]+
akan cocok dengan semua karakter kecuali ~
dan kembali pertandingan di array. Anda kemudian dapat mengekstrak pertandingan dari itu.
Zach punya yang satu ini kan.. menggunakan metode-nya anda juga bisa membuat yang tampaknya "multi-dimensi" array.. saya buat contoh cepat di JSFiddle
// 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(",");
Ini string.split("~")[0];
akan hal-hal yang dilakukan.
sumber: String.prototipe.split()
Lain pendekatan fungsional menggunakan kari dan fungsi komposisi.
Jadi hal pertama yang akan menjadi fungsi split. Kami ingin membuat ini "john smith~123 Jalan~Apt 4~New York~NY~12345"
ini ["john smith", "123 Jalan", "Apt 4", "New York", "NY", "12345"]
const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');
Jadi sekarang kita dapat menggunakan kami berupa splitByTilde
fungsi. Contoh:
splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Untuk mendapatkan elemen pertama kita dapat menggunakan daftar[0]
operator. Let's membangun pertama
fungsi:
const first = (list) => list[0];
Algoritma adalah: split oleh usus dan kemudian mendapatkan elemen pertama dari daftar yang diberikan. Jadi kita dapat menulis fungsi-fungsi untuk membangun terakhir kami getName
fungsi. Membangun menulis
fungsi dengan mengurangi
:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
Dan sekarang menggunakan ini untuk menulis splitByTilde
dan pertama
fungsi.
const getName = compose(first, splitByTilde);
let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
Gunakan kode ini --
function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");
}
Sejak pemisahan pada tanda koma pertanyaan diduplikasi untuk pertanyaan ini, menambahkan ini di sini.
Jika anda ingin membagi pada karakter dan juga menangani spasi tambahan yang mungkin mengikuti karakter, yang sering terjadi dengan tanda koma, anda dapat menggunakan menggantikan
kemudian split
, seperti ini:
var items = string.mengganti(/,\s+/, ",").split(',')
JavaScript: Mengkonversi String ke Array JavaScript Split
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/