Tôi có chuỗi này
'john smith~123 Street~Apt 4~New York~NY~12345'
Sử dụng JavaScript, cách nhanh nhất để phân tích điều này thành
var name = "john smith";
var street= "123 Street";
//etc...
Tôi có chuỗi này
'john smith~123 Street~Apt 4~New York~NY~12345'
Sử dụng JavaScript, cách nhanh nhất để phân tích điều này thành
var name = "john smith";
var street= "123 Street";
//etc...
Câu trả lời:
Với String.prototype.split
chức năng của 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.
Bạn không cần 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];
Theo ECMAScript6 ES6
, cách sạch sẽ là phá hủy các mảng:
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
Bạn có thể có thêm các mục trong chuỗi đầu vào. Trong trường hợp này, bạn có thể sử dụng toán tử nghỉ để lấy một mảng cho phần còn lại hoặc chỉ cần bỏ qua chúng:
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"]
Tôi giả sử một tài liệu tham khảo chỉ đọc cho các giá trị và sử dụng const
khai báo.
Thưởng thức ES6!
const [name, , unit, ...others] = ...
Mặc dù đây không phải là cách đơn giản nhất, bạn có thể làm điều này:
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"
}
Cập nhật cho ES2015, sử dụng hủy
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
. Hàm thay thế thứ hai đang sử dụng [^~]+
để khớp với từng phần khác nhau (ví dụ 'Phố 123', 'Apt 4', v.v.) và gọi hàm cho từng phần, chuyển nó làm đối số. Mỗi lần chạy, hàm sẽ lấy khóa đầu tiên từ mảng khóa (cũng loại bỏ nó bằng Array.unshift) và gán khóa và phần cho đối tượng địa chỉ.
Nếu Spliter được tìm thấy thì chỉ
Tách nó
khác trả về cùng một chuỗi
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]; } } }
Cái gì đó như:
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
Có lẽ sẽ dễ dàng nhất
split("~")
hoặc split(/~/)
không split("/~/")
. Sau này sẽ chỉ phân chia "John/~/Smith"
và không "John~Smith"
.
Bạn có thể sử dụng split
để phân chia văn bản.
Thay thế, bạn cũng có thể sử dụng match
như sau
var str = 'john smith~123 Street~Apt 4~New York~NY~12345';
matches = str.match(/[^~]+/g);
console.log(matches);
document.write(matches);
Regex [^~]+
sẽ khớp tất cả các ký tự ngoại trừ ~
và trả về các kết quả khớp trong một mảng. Sau đó bạn có thể trích xuất các trận đấu từ nó.
str.split();
đã không hoạt động trong Firefox, nhưng điều này hoạt động cả trong Chrome và Firefox.
str.split();
hoạt động trong Firefox và tất cả các trình duyệt chính .
Zach có quyền này .. sử dụng phương thức của mình, bạn cũng có thể tạo một mảng dường như "đa chiều" .. Tôi đã tạo một ví dụ nhanh tại 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: Chuyển đổi chuỗi thành mảng tách JavaScript
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-opes-to-array-javascript/
Điều này string.split("~")[0];
được thực hiện.
nguồn: String.prototype.split ()
Một cách tiếp cận chức năng khác sử dụng cà ri và thành phần chức năng.
Vì vậy, điều đầu tiên sẽ là chức năng phân chia. Chúng tôi muốn làm điều này "john smith~123 Street~Apt 4~New York~NY~12345"
thành["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
const split = (separator) => (text) => text.split(separator);
const splitByTilde = split('~');
Vì vậy, bây giờ chúng ta có thể sử dụng splitByTilde
chức năng chuyên ngành của chúng tôi . Thí dụ:
splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
Để có được phần tử đầu tiên, chúng ta có thể sử dụng list[0]
toán tử. Hãy xây dựng một first
chức năng:
const first = (list) => list[0];
Thuật toán là: chia cho dấu hai chấm và sau đó lấy phần tử đầu tiên của danh sách đã cho. Vì vậy, chúng ta có thể soạn các hàm đó để xây dựng getName
hàm cuối cùng . Xây dựng compose
chức năng với reduce
:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
Và bây giờ sử dụng nó để soạn thảo splitByTilde
và các first
chức năng.
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("=");
Vì câu hỏi chia tách dấu phẩy được nhân đôi cho câu hỏi này, nên thêm câu hỏi này vào đây.
Nếu bạn muốn phân tách một ký tự và cũng xử lý các khoảng trắng bổ sung có thể theo ký tự đó, điều thường xảy ra với dấu phẩy, bạn có thể sử dụng replace
sau đó split
, như sau:
var items = string.replace(/,\s+/, ",").split(',')
Sử dụng mã này -
function myFunction() {
var str = "How are you doing today?";
var res = str.split("/");
}