Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

Tôi đã không nhận được một regex được tối ưu hóa, chia cho tôi một chuỗi dựa trên không gian trắng đầu tiên:

var str="72 tocirah sneab";

Tôi cần lấy:

[
    "72",
    "tocirah sneab",
]

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

Frederj

1.3758 Huy hiệu bạc20 Huy hiệu Đồng8 silver badges20 bronze badges

Hỏi ngày 22 tháng 4 năm 2012 lúc 22:42Apr 22, 2012 at 22:42

3

Nếu bạn chỉ quan tâm đến ký tự không gian (chứ không phải tab hoặc các ký tự khoảng trắng khác) và chỉ quan tâm đến mọi thứ trước không gian đầu tiên và mọi thứ sau không gian đầu tiên, bạn có thể làm điều đó mà không có biểu thức thông thường như thế này:

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"

Lưu ý rằng nếu hoàn toàn không có khoảng trống, thì dòng đầu tiên sẽ trả về một chuỗi trống và dòng thứ hai sẽ trả về toàn bộ chuỗi. Hãy chắc chắn rằng đó là hành vi mà bạn muốn trong tình huống đó (hoặc tình huống đó sẽ không phát sinh).

Đã trả lời ngày 22 tháng 4 năm 2012 lúc 22:50Apr 22, 2012 at 22:50

TrottstrottTrott

62.5K22 Huy hiệu vàng161 Huy hiệu bạc202 Huy hiệu đồng22 gold badges161 silver badges202 bronze badges

3

JavaScript không hỗ trợ Lookbehinds, vì vậy

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
7 là không thể.
str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
8 hoạt động:

str.match(/^(\S+)\s(.*)/).slice(1)

Một mẹo khác:

str.replace(/\s+/, '\x01').split('\x01')

bạn nghĩ thế nào về:

[str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]

và tại sao không

reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)

hoặc có thể

re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))

Cập nhật năm 2019: Kể từ ES2018, Lookbehinds được hỗ trợ:

str = "72 tocirah sneab"
s = str.split(/(?<=^\S+)\s/)
console.log(s)

Đã trả lời ngày 22 tháng 4 năm 2012 lúc 22:51Apr 22, 2012 at 22:51

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

Georggeorggeorg

207K48 Huy hiệu vàng296 Huy hiệu bạc376 Huy hiệu Đồng48 gold badges296 silver badges376 bronze badges

1

Trong es6 bạn cũng có thể

let [first, ...second] = str.split(" ")
second = second.join(" ")

Đã trả lời ngày 16 tháng 4 năm 2016 lúc 14:13Apr 16, 2016 at 14:13

user1652176user1652176user1652176

4194 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges

2

[
    "72",
    "tocirah sneab",
]
0

Nhưng tôi vẫn nghĩ rằng có một cách nhanh hơn mặc dù.

Đã trả lời ngày 22 tháng 4 năm 2012 lúc 22:47Apr 22, 2012 at 22:47

JosephjosephJoseph

Huy hiệu vàng 115K2828 gold badges179 silver badges226 bronze badges

0

Giải pháp của Georg rất đẹp, nhưng phá vỡ nếu chuỗi không chứa bất kỳ khoảng trắng nào. Nếu chuỗi của bạn có cơ hội không chứa khoảng trắng, thì việc sử dụng và bắt các nhóm như vậy sẽ an toàn hơn.

[
    "72",
    "tocirah sneab",
]
1

Đã trả lời ngày 26 tháng 6 năm 2017 lúc 19:34Jun 26, 2017 at 19:34

fpscolinfpscolinfpscolin

3813 Huy hiệu bạc10 Huy hiệu Đồng3 silver badges10 bronze badges

Bạn cũng có thể sử dụng. L chỗ để chỉ thay thế lần xuất hiện đầu tiên,

[
    "72",
    "tocirah sneab",
]
2

Bỏ ra /g.

THỬ NGHIỆM

Đã trả lời ngày 22 tháng 4 năm 2012 lúc 22:54Apr 22, 2012 at 22:54

DaedalusdaedalusDaedalus

7.5903 Huy hiệu vàng33 Huy hiệu bạc58 Huy hiệu Đồng3 gold badges33 silver badges58 bronze badges

2

Tôi không chắc tại sao tất cả các câu trả lời khác rất phức tạp, khi bạn có thể làm tất cả trong một dòng, cũng xử lý việc thiếu không gian.

Ví dụ, hãy lấy các thành phần đầu tiên và "phần còn lại" của một tên:

[
    "72",
    "tocirah sneab",
]
3

Đã trả lời ngày 31 tháng 5 năm 2020 lúc 6:47May 31, 2020 at 6:47

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

Dan Dascalescudan DascalescuDan Dascalescu

Huy hiệu vàng 134K50 307 Huy hiệu bạc392 Huy hiệu Đồng50 gold badges307 silver badges392 bronze badges

3

Chỉ cần chia chuỗi thành một mảng và dán các phần bạn cần cùng nhau. Cách tiếp cận này rất linh hoạt, nó hoạt động trong nhiều tình huống và thật dễ dàng để lý do. Ngoài ra, bạn chỉ cần một cuộc gọi chức năng.

[
    "72",
    "tocirah sneab",
]
4

Ngoài ra, nếu bạn muốn chọn anh đào những gì bạn cần trực tiếp từ chuỗi, bạn có thể làm điều gì đó như thế này:

[
    "72",
    "tocirah sneab",
]
5

Hoặc như thế này:

[
    "72",
    "tocirah sneab",
]
6

Tuy nhiên tôi đề xuất ví dụ đầu tiên.

Bản demo làm việc: JSBIN

Đã trả lời ngày 18 tháng 7 năm 2016 lúc 2:10Jul 18, 2016 at 2:10

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

RotaretirotaretiRotareti

44.6K19 Huy hiệu vàng104 Huy hiệu bạc102 Huy hiệu đồng19 gold badges104 silver badges102 bronze badges

1

Một cách đơn giản khác:

[
    "72",
    "tocirah sneab",
]
7

Result:

[
    "72",
    "tocirah sneab",
]
8

Đã trả lời ngày 17 tháng 1 năm 2021 lúc 10:19Jan 17, 2021 at 10:19

Lev K.lev K.Lev K.

3364 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges

Tôi đã sử dụng

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
9 để có được tất cả các ký tự trước không gian.

[
    "72",
    "tocirah sneab",
]
9

Đã trả lời ngày 18 tháng 12 năm 2020 lúc 9:18Dec 18, 2020 at 9:18

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

R15R15R15

11.9K13 Huy hiệu vàng80 Huy hiệu bạc146 Huy hiệu đồng13 gold badges80 silver badges146 bronze badges

2

Bất cứ khi nào tôi cần lấy một lớp từ danh sách các lớp hoặc một phần của tên lớp hoặc ID, tôi luôn sử dụng split () sau đó lấy nó riêng với chỉ mục mảng hoặc, thường xuyên nhất trong trường hợp của tôi, pop () phần tử cuối cùng hoặc dịch chuyển () để có được phần đầu tiên.

Ví dụ này có các lớp của Div "Gallery_148 UI-Sortable" và trả về ID bộ sưu tập 148.

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
0

Tôi chắc chắn rằng nó có thể được nén thành các dòng ít hơn nhưng tôi đã để nó mở rộng cho khả năng đọc.

Đã trả lời ngày 14 tháng 10 năm 2014 lúc 20:13Oct 14, 2014 at 20:13

Acaritoacaritoacarito

6247 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges

Tôi cần một kết quả hơi khác.

Tôi muốn từ đầu tiên, và những gì đến sau nó - ngay cả khi nó trống.

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
1

Vì vậy, nếu đầu vào là

str.match(/^(\S+)\s(.*)/).slice(1)
0, bạn sẽ nhận được
str.match(/^(\S+)\s(.*)/).slice(1)
0 và
str.match(/^(\S+)\s(.*)/).slice(1)
2.

Nếu đầu vào là

str.match(/^(\S+)\s(.*)/).slice(1)
3, bạn sẽ nhận được
str.match(/^(\S+)\s(.*)/).slice(1)
4 và
str.match(/^(\S+)\s(.*)/).slice(1)
5.

Đã trả lời ngày 10 tháng 4 năm 2015 lúc 11:16Apr 10, 2015 at 11:16

Jim Richardsjim RichardsJim Richards

6981 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng1 gold badge7 silver badges19 bronze badges

Hầu hết các câu trả lời trên tìm kiếm theo không gian, không phải khoảng trắng. @Câu trả lời của Georg là tốt. Tôi có một phiên bản hơi khác nhau.

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
2

Tôi không chắc làm thế nào để nói cái nào hiệu quả nhất vì regexp trong tôi đơn giản hơn rất nhiều, nhưng nó có thêm space.

(@Georg's để tham khảo là

str.match(/^(\S+)\s(.*)/).slice(1)
6)

Câu hỏi không chỉ định cách xử lý không có khoảng trắng hoặc tất cả khoảng trắng, không gian nào hoặc dấu vết trắng hoặc chuỗi trống và kết quả của chúng tôi khác nhau một cách tinh tế trong các trường hợp đó.

Tôi đang viết cái này cho một trình phân tích cú pháp cần tiêu thụ từ tiếp theo, vì vậy tôi thích định nghĩa của mình, mặc dù @Georg có thể tốt hơn cho các trường hợp sử dụng khác.

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
3

Đã trả lời ngày 14 tháng 8 năm 2020 lúc 23:10Aug 14, 2020 at 23:10

1

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
4

tạo ra kết quả được chỉ định

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
5

Đã trả lời ngày 13 tháng 7 lúc 8:50Jul 13 at 8:50

JonathanjonathanJonathan

5478 Huy hiệu bạc9 Huy hiệu Đồng8 silver badges9 bronze badges

Hàm sau sẽ luôn chia câu thành 2 phần tử. Phần tử đầu tiên sẽ chỉ chứa từ đầu tiên và phần tử thứ hai sẽ chứa tất cả các từ khác (hoặc nó sẽ là một chuỗi trống).always split the sentence into 2 elements. The first element will contain only the first word and the second element will contain all the other words (or it will be a empty string).

str.substring(0, str.indexOf(' ')); // "72"
str.substring(str.indexOf(' ') + 1); // "tocirah sneab"
6

Đã trả lời ngày 9 tháng 3 năm 2020 lúc 10:04Mar 9, 2020 at 10:04

Hướng dẫn split string first space javascript - chia chuỗi khoảng trắng đầu tiên javascript

1

Làm thế nào để bạn chia dựa trên sự xuất hiện đầu tiên?

Sử dụng phương thức String.Split () với phá hủy mảng để chia một chuỗi chỉ trên lần xuất hiện đầu tiên của ký tự, ví dụ: const [đầu tiên, ... nghỉ] = str. tách ra('-'); . split() method with array destructuring to split a string only on the first occurrence of a character, e.g. const [first, ... rest] = str. split('-'); .

Làm cách nào để phân chia một không gian trong JavaScript?

Giải pháp tiêu chuẩn để phân chia một chuỗi là sử dụng phương thức Split () được cung cấp bởi lớp chuỗi.Nó chấp nhận một biểu thức chính quy như một dấu phân cách và trả về một mảng chuỗi.Để phân chia trên bất kỳ ký tự khoảng trắng nào, bạn có thể sử dụng lớp ký tự được xác định trước đại diện cho một ký tự khoảng trắng.use the predefined character class \s that represents a whitespace character.

Làm thế nào để bạn có được từ đầu tiên trước một khoảng trống trong JavaScript?

Để có được từ đầu tiên của một chuỗi: gọi phương thức chia (), chuyển nó, một chuỗi chứa một khoảng trống dưới dạng tham số.Phương thức phân chia sẽ trả về một mảng chứa các từ trong chuỗi.Truy cập mảng tại chỉ mục 0 để có được từ đầu tiên của chuỗi.Call the split() method passing it a string containing an empty space as a parameter. The split method will return an array containing the words in the string. Access the array at index 0 to get the first word of the string.

Làm thế nào để bạn chia một chuỗi với khoảng trống?

Để phân chia một chuỗi với không gian làm dấu phân cách trong java, phương thức call split () trên đối tượng chuỗi, với khoảng trống "" được truyền làm đối số cho phương thức split ().Phương thức trả về một mảng chuỗi với các phân tách dưới dạng các phần tử trong mảng.call split() method on the string object, with space " " passed as argument to the split() method. The method returns a String Array with the splits as elements in the array.