Saya punya string ini
'john smith~123 Street~Apt 4~New York~NY~12345'
Menggunakan JavaScript, apa cara tercepat untuk menguraikannya
var name = "john smith";
var street= "123 Street";
//etc...
Saya punya string ini
'john smith~123 Street~Apt 4~New York~NY~12345'
Menggunakan JavaScript, apa cara tercepat untuk menguraikannya
var name = "john smith";
var street= "123 Street";
//etc...
Jawaban:
Dengan String.prototype.split
fungsi JavaScript :
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.
Anda tidak perlu 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];
Menurut ECMAScript6 ES6
, cara bersih adalah merusak susunan 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 string input. Dalam hal ini, Anda bisa menggunakan operator sisanya untuk mendapatkan array untuk sisanya atau mengabaikannya:
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"]
Saya menduga referensi hanya baca untuk nilai dan menggunakan const
deklarasi.
Nikmati ES6!
const [name, , unit, ...others] = ...
Meskipun ini bukan cara paling sederhana, Anda bisa melakukan 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"
}
Pembaruan untuk ES2015, menggunakan penghancuran
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
keys
. Fungsi ganti kedua digunakan [^~]+
untuk mencocokkan setiap bagian yang berbeda (yaitu '123 Street', 'Apt 4', dll) dan memanggil fungsi untuk masing-masing bagian, meneruskannya sebagai argumen. Pada setiap menjalankan, fungsi mengambil kunci pertama dari array kunci (juga menghapusnya menggunakan Array.unshift) dan menetapkan kunci dan bagian ke objek alamat.
Jika Spliter ditemukan maka hanya
Membaginya
lain mengembalikan string yang sama
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]; } } }
Sesuatu seperti:
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
Mungkin akan menjadi yang paling mudah
split("~")
atau split(/~/)
tidak split("/~/")
. Yang terakhir hanya akan terpecah "John/~/Smith"
dan tidak "John~Smith"
.
Anda dapat menggunakannya split
untuk membagi teks.
Sebagai alternatif, Anda juga bisa menggunakan match
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 mencocokkan semua karakter kecuali ~
dan mengembalikan kecocokan dalam array. Anda kemudian dapat mengekstrak kecocokan dari itu.
str.split();
tidak berfungsi di Firefox, tetapi ini berfungsi baik di Chrome dan Firefox.
str.split();
berfungsi di Firefox dan semua peramban utama .
Zach memiliki hak ini .. menggunakan metodenya, Anda juga bisa membuat array yang tampaknya "multi-dimensi" .. Saya membuat contoh cepat di 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(",");
JavaScript: Konversi 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/
Ini string.split("~")[0];
menyelesaikan sesuatu.
sumber: String.prototype.split ()
Pendekatan fungsional lain menggunakan kari dan komposisi fungsi.
Jadi, hal pertama adalah fungsi split. Kami ingin membuat ini "john smith~123 Street~Apt 4~New York~NY~12345"
menjadi ini["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');
Jadi sekarang kita dapat menggunakan splitByTilde
fungsi khusus kami . 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 bisa menggunakan list[0]
operator. Mari kita membangun first
fungsi:
const first = (list) => list[0];
Algoritma ini adalah: dibagi dengan titik dua dan kemudian mendapatkan elemen pertama dari daftar yang diberikan. Jadi kita dapat menyusun fungsi-fungsi itu untuk membangun getName
fungsi akhir kita . Membangun compose
fungsi dengan reduce
:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
Dan sekarang menggunakannya untuk menulis splitByTilde
dan first
fungsi.
const getName = compose(first, splitByTilde);
let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
//basic url=http://localhost:58227/ExternalApproval.html?Status=1
var ar= [url,statu] = window.location.href.split("=");
Karena pertanyaan pemisahan pada koma digandakan untuk pertanyaan ini, tambahkan ini di sini.
Jika Anda ingin membagi pada karakter dan juga menangani spasi tambahan yang mungkin mengikuti karakter itu, yang sering terjadi dengan koma, Anda dapat menggunakan replace
kemudian split
, seperti ini:
var items = string.replace(/,\s+/, ",").split(',')
Gunakan kode ini -
function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");
}