Thay thế ký tự thứ n trong chuỗi javascript

Phương thức

"xxx".replace("", "_"); // "_xxx"
21 không thay đổi chuỗi gốc. Phương thức trả về một chuỗi mới chứa một phần của chuỗi ban đầu

  1. Lần gọi đầu tiên tới phương thức
    "xxx".replace("", "_"); // "_xxx"
    
    22 đã trả về một phần của chuỗi trước khi ký tự được thay thế
  2. Lần gọi phương thức thứ hai trả về một phần của chuỗi sau ký tự được thay thế

Trong ví dụ này, chúng tôi thay thế ký tự ở chỉ mục

"xxx".replace("", "_"); // "_xxx"
23, là một
"xxx".replace("", "_"); // "_xxx"
24 bằng dấu gạch dưới
"xxx".replace("", "_"); // "_xxx"
25

Lưu ý rằng chúng tôi đã thêm độ dài của chuỗi thay thế vào đối số

"xxx".replace("", "_"); // "_xxx"
26 trong lần gọi thứ hai đến phương thức
"xxx".replace("", "_"); // "_xxx"
22

Điều này rất hữu ích khi bạn cần thay thế nhiều ký tự trong chuỗi

Chỉ số bắt đầu là bao gồm, vì vậy chúng tôi phải thêm ít nhất 1 vào

"xxx".replace("", "_"); // "_xxx"
26 của ký tự được thay thế

Nếu bạn chỉ cần thay thế một ký tự trong chuỗi, bạn không cần phải sử dụng độ dài của chuỗi thay thế, bạn có thể trực tiếp thêm

"xxx".replace("", "_"); // "_xxx"
220 vào chỉ mục

Cách tiếp cận này cũng hoạt động nếu bạn cần thay thế một ký tự bằng nhiều ký tự, bắt đầu từ một chỉ mục cụ thể

Chúng tôi đã thay thế ký tự trong chuỗi tại chỉ mục

"xxx".replace("", "_"); // "_xxx"
23 bằng nhiều ký tự

Nếu bạn cần lấy chỉ mục của một chuỗi con trong một chuỗi, hãy sử dụng phương thức

"xxx".replace("", "_"); // "_xxx"
222

chuỗi. nguyên mẫu. Phương thức indexOf trả về chỉ mục của lần xuất hiện đầu tiên của chuỗi con trong chuỗi

Nếu bạn cần thay thế nhiều ký tự trong chuỗi bằng nhiều ký tự, hãy sử dụng độ dài của chuỗi thay thế để xác định ký tự đầu tiên của lát thứ hai

Chỉ mục bắt đầu trong lần gọi thứ hai của phương thức

"xxx".replace("", "_"); // "_xxx"
22 được sử dụng bằng cách thêm chỉ mục của ký tự được thay thế vào độ dài của chuỗi thay thế

Điều này có nghĩa là chúng tôi đang loại trừ chính xác số ký tự khỏi chuỗi ban đầu mà chúng tôi cung cấp trong chuỗi thay thế của mình

Phương thức

"xxx".replace("", "_"); // "_xxx"
4 trả về một chuỗi mới với một, một số hoặc tất cả các kết quả khớp của một
"xxx".replace("", "_"); // "_xxx"
5 được thay thế bằng một
"xxx".replace("", "_"); // "_xxx"
6.
"xxx".replace("", "_"); // "_xxx"
5 có thể là một chuỗi hoặc một
"xxx".replace("", "_"); // "_xxx"
8 và
"xxx".replace("", "_"); // "_xxx"
6 có thể là một chuỗi hoặc một hàm được gọi cho mỗi trận đấu. Nếu
"xxx".replace("", "_"); // "_xxx"
5 là một chuỗi, chỉ lần xuất hiện đầu tiên sẽ được thay thế. Chuỗi ban đầu không thay đổi

replace(pattern, replacement)

"xxx".replace("", "_"); // "_xxx"
5

Có thể là một chuỗi hoặc một đối tượng có phương thức

"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
2 — ví dụ điển hình là một biểu thức chính quy. Bất kỳ giá trị nào không có phương thức
"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
2 sẽ bị ép thành một chuỗi

"xxx".replace("", "_"); // "_xxx"
6

Có thể là một chuỗi hoặc một chức năng

  • Nếu đó là một chuỗi, nó sẽ thay thế chuỗi con khớp với
    "xxx".replace("", "_"); // "_xxx"
    
    5. Một số mẫu thay thế đặc biệt được hỗ trợ;
  • Nếu đó là một hàm, nó sẽ được gọi cho mỗi trận đấu và giá trị trả về của nó được sử dụng làm văn bản thay thế. Các đối số được cung cấp cho chức năng này được mô tả trong phần bên dưới

Một chuỗi mới, với một, một số hoặc tất cả các kết quả khớp của mẫu được thay thế bằng sự thay thế đã chỉ định

Phương thức này không làm thay đổi giá trị chuỗi mà nó được gọi. Nó trả về một chuỗi mới

Một mẫu chuỗi sẽ chỉ được thay thế một lần. Để thực hiện tìm kiếm và thay thế toàn cầu, hãy sử dụng biểu thức chính quy với cờ

"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
6 hoặc thay vào đó sử dụng
"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
7

Nếu

"xxx".replace("", "_"); // "_xxx"
5 là đối tượng có phương thức
"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
2 (bao gồm đối tượng
"xxx".replace("", "_"); // "_xxx"
8), thì phương thức đó được gọi với chuỗi đích và đối số
"xxx".replace("", "_"); // "_xxx"
6. Giá trị trả về của nó trở thành giá trị trả về của
"xxx".replace("", "_"); // "_xxx"
4. Trong trường hợp này, hành vi của
"xxx".replace("", "_"); // "_xxx"
4 được mã hóa hoàn toàn bằng phương pháp
"xxx".replace("", "_"); // "_xxx"
14 — ví dụ: bất kỳ đề cập nào về "bắt nhóm" trong mô tả bên dưới thực sự là chức năng do
"xxx".replace("", "_"); // "_xxx"
15 cung cấp

Nếu

"xxx".replace("", "_"); // "_xxx"
5 là một chuỗi rỗng, phần thay thế sẽ được thêm vào đầu chuỗi

"xxx".replace("", "_"); // "_xxx"

Biểu thức chính quy có cờ

"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
6 là trường hợp duy nhất mà
"xxx".replace("", "_"); // "_xxx"
4 thay thế nhiều lần. Để biết thêm thông tin về cách các thuộc tính regex (đặc biệt là cờ dính) tương tác với
"xxx".replace("", "_"); // "_xxx"
4, hãy xem
"xxx".replace("", "_"); // "_xxx"
80

Chuỗi thay thế có thể bao gồm các mẫu thay thế đặc biệt sau

PatternInserts
"xxx".replace("", "_"); // "_xxx"
81Chèn một
"xxx".replace("", "_"); // "_xxx"
82.
"xxx".replace("", "_"); // "_xxx"
83Chèn chuỗi con phù hợp.
"xxx".replace("", "_"); // "_xxx"
84Chèn phần của chuỗi đứng trước chuỗi con phù hợp.
"xxx".replace("", "_"); // "_xxx"
85Chèn phần của chuỗi theo sau chuỗi con phù hợp.
"xxx".replace("", "_"); // "_xxx"
86Chèn nhóm chụp thứ
"xxx".replace("", "_"); // "_xxx"
87 (được lập chỉ mục ______288) trong đó
"xxx".replace("", "_"); // "_xxx"
87 là một số nguyên dương nhỏ hơn 100.
"xxx".replace("", "_"); // "_xxx"
80Chèn nhóm chụp được đặt tên trong đó
"xxx".replace("", "_"); // "_xxx"
81 là tên nhóm

"xxx".replace("", "_"); // "_xxx"
86 và
"xxx".replace("", "_"); // "_xxx"
80 chỉ khả dụng nếu đối số
"xxx".replace("", "_"); // "_xxx"
5 là một đối tượng
"xxx".replace("", "_"); // "_xxx"
8. Nếu
"xxx".replace("", "_"); // "_xxx"
5 là một chuỗi hoặc nếu nhóm chụp tương ứng không có trong biểu thức chính quy, thì mẫu sẽ được thay thế dưới dạng chữ. Nếu nhóm có mặt nhưng không khớp (vì nó là một phần của phép nối), nó sẽ được thay thế bằng một chuỗi rỗng

"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched

Bạn có thể chỉ định một hàm làm tham số thứ hai. Trong trường hợp này, chức năng sẽ được gọi sau khi khớp đã được thực hiện. Kết quả của hàm (giá trị trả về) sẽ được sử dụng làm chuỗi thay thế

Ghi chú. Các mẫu thay thế đặc biệt nêu trên không áp dụng cho các chuỗi được trả về từ hàm thay thế

Hàm có chữ ký sau

"xxx".replace("", "_"); // "_xxx"
1

Các đối số cho hàm như sau

"xxx".replace("", "_"); // "_xxx"
87

Chuỗi con phù hợp. (Tương ứng với

"xxx".replace("", "_"); // "_xxx"
83 ở trên. )

"xxx".replace("", "_"); // "_xxx"
89

Chuỗi thứ

"xxx".replace("", "_"); // "_xxx"
87 được tìm thấy bởi một nhóm chụp (bao gồm các nhóm chụp được đặt tên), cung cấp đối số đầu tiên cho
"xxx".replace("", "_"); // "_xxx"
4 là một đối tượng
"xxx".replace("", "_"); // "_xxx"
8. (Tương ứng với ________ 533, ________ 534, v.v. ở trên. ) Ví dụ: nếu
"xxx".replace("", "_"); // "_xxx"
5 là
"xxx".replace("", "_"); // "_xxx"
36, thì
"xxx".replace("", "_"); // "_xxx"
37 là giá trị khớp của
"xxx".replace("", "_"); // "_xxx"
38 và
"xxx".replace("", "_"); // "_xxx"
39 là giá trị khớp của
"xxx".replace("", "_"); // "_xxx"
00. Nếu nhóm là một phần của phép nối (e. g.
"xxx".replace("", "_"); // "_xxx"
01), phương án chưa từng có sẽ là
"xxx".replace("", "_"); // "_xxx"
02

"xxx".replace("", "_"); // "_xxx"
03

Độ lệch của chuỗi con phù hợp trong toàn bộ chuỗi đang được kiểm tra. Ví dụ: nếu toàn bộ chuỗi là

"xxx".replace("", "_"); // "_xxx"
04 và chuỗi con phù hợp là
"xxx".replace("", "_"); // "_xxx"
05, thì đối số này sẽ là
"xxx".replace("", "_"); // "_xxx"
88

"xxx".replace("", "_"); // "_xxx"
07

Toàn bộ chuỗi đang được kiểm tra

"xxx".replace("", "_"); // "_xxx"
08

Một đối tượng có khóa là tên nhóm được sử dụng và có giá trị là các phần khớp (

"xxx".replace("", "_"); // "_xxx"
02 nếu không khớp). Chỉ xuất hiện nếu
"xxx".replace("", "_"); // "_xxx"
5 chứa ít nhất một nhóm bắt giữ có tên

Số lượng đối số chính xác phụ thuộc vào việc đối số đầu tiên có phải là đối tượng

"xxx".replace("", "_"); // "_xxx"
8 hay không — và nếu có thì nó có bao nhiêu nhóm chụp

Ví dụ sau sẽ đặt

replace(pattern, replacement)
22 thành
replace(pattern, replacement)
23

"xxx".replace("", "_"); // "_xxx"
8

Hàm sẽ được gọi nhiều lần để mỗi lần khớp hoàn toàn được thay thế nếu biểu thức chính quy trong tham số đầu tiên là toàn cục

Trong ví dụ sau, biểu thức chính quy được xác định trong

"xxx".replace("", "_"); // "_xxx"
4 và bao gồm cờ trường hợp bỏ qua

"xxx".replace("", "_"); // "_xxx"
8

Nhật ký này

replace(pattern, replacement)
25

Ghi chú. Xem hướng dẫn biểu thức chính quy để biết thêm giải thích về biểu thức chính quy

Thay thế toàn cầu chỉ có thể được thực hiện bằng một biểu thức chính quy. Trong ví dụ sau, biểu thức chính quy bao gồm which cho phép

"xxx".replace("", "_"); // "_xxx"
4 thay thế mỗi lần xuất hiện của
replace(pattern, replacement)
27 trong chuỗi bằng
replace(pattern, replacement)
28

"xxx".replace("", "_"); // "_xxx"
3

Nhật ký này

replace(pattern, replacement)
29

Đoạn script sau chuyển các từ trong chuỗi. Đối với văn bản thay thế, tập lệnh sử dụng các nhóm chụp và các mẫu thay thế

"xxx".replace("", "_"); // "_xxx"
33 và
"xxx".replace("", "_"); // "_xxx"
34

"xxx".replace("", "_"); // "_xxx"
0

Nhật ký này

"xxx".replace("", "_"); // "_xxx"
62

Trong ví dụ này, tất cả các lần xuất hiện của chữ hoa trong chuỗi được chuyển thành chữ thường và dấu gạch nối được chèn ngay trước vị trí khớp. Điều quan trọng ở đây là các hoạt động bổ sung là cần thiết trên mục phù hợp trước khi nó được trả lại để thay thế

Hàm thay thế chấp nhận đoạn mã phù hợp làm tham số của nó và sử dụng nó để chuyển đổi kiểu chữ và nối dấu gạch nối trước khi trả về

replace(pattern, replacement)
2

Cho trước

"xxx".replace("", "_"); // "_xxx"
63, điều này trả về
"xxx".replace("", "_"); // "_xxx"
64

Vì muốn biến đổi thêm kết quả của trận đấu trước khi thực hiện thay người cuối cùng, chúng ta phải sử dụng một hàm. Điều này buộc phải đánh giá trận đấu trước phương pháp

"xxx".replace("", "_"); // "_xxx"
65. Nếu chúng tôi đã cố gắng làm điều này bằng cách sử dụng trận đấu mà không có chức năng, thì
"xxx".replace("", "_"); // "_xxx"
65 sẽ không có tác dụng

"xxx".replace("", "_"); // "_xxx"
6

Điều này là do trước tiên,

"xxx".replace("", "_"); // "_xxx"
67 sẽ được đánh giá là một chuỗi ký tự (dẫn đến cùng một
"xxx".replace("", "_"); // "_xxx"
68) trước khi sử dụng các ký tự làm mẫu

Ví dụ sau thay thế độ Fahrenheit bằng độ C tương đương. Độ Fahrenheit phải là một số kết thúc bằng

"xxx".replace("", "_"); // "_xxx"
69. Hàm trả về số Celsius kết thúc bằng
"xxx".replace("", "_"); // "_xxx"
00. Ví dụ: nếu số đầu vào là
"xxx".replace("", "_"); // "_xxx"
01, hàm trả về
"xxx".replace("", "_"); // "_xxx"
02. Nếu số là
"xxx".replace("", "_"); // "_xxx"
03, hàm trả về
"xxx".replace("", "_"); // "_xxx"
04

Biểu thức chính quy

"xxx".replace("", "_"); // "_xxx"
05 kiểm tra bất kỳ số nào kết thúc bằng
"xxx".replace("", "_"); // "_xxx"
06. Hàm có thể truy cập số độ Fahrenheit thông qua tham số thứ hai của nó,
"xxx".replace("", "_"); // "_xxx"
37. Hàm đặt số Celsius dựa trên số độ Fahrenheit được truyền trong một chuỗi tới hàm
"xxx".replace("", "_"); // "_xxx"
08.
"xxx".replace("", "_"); // "_xxx"
08 sau đó trả về số Celsius. Hàm này xấp xỉ cờ
"xxx".replace("", "_"); // "_xxx"
10 của Perl

"xxx".replace("", "_"); // "_xxx"
0

Giả sử chúng ta muốn tạo một trình thay thế nối thêm dữ liệu bù vào mọi chuỗi khớp. Bởi vì hàm thay thế đã nhận tham số

"xxx".replace("", "_"); // "_xxx"
03, nên sẽ không quan trọng nếu biểu thức chính quy được biết tĩnh

"xxx".replace("", "_"); // "_xxx"
1

Tuy nhiên, trình thay thế này sẽ khó khái quát hóa nếu chúng ta muốn nó hoạt động với bất kỳ mẫu biểu thức chính quy nào. Trình thay thế là biến đổi - số lượng đối số mà nó nhận được phụ thuộc vào số lượng nhóm chụp có mặt. Chúng tôi có thể sử dụng các tham số còn lại, nhưng nó cũng sẽ thu thập

"xxx".replace("", "_"); // "_xxx"
03,
"xxx".replace("", "_"); // "_xxx"
07, v.v. vào mảng. Thực tế là
"xxx".replace("", "_"); // "_xxx"
08 có thể hoặc không thể được thông qua tùy thuộc vào danh tính của biểu thức chính quy cũng sẽ khiến khó có thể biết được đối số nào tương ứng với
"xxx".replace("", "_"); // "_xxx"
03 một cách tổng quát

"xxx".replace("", "_"); // "_xxx"
2

Ví dụ

"xxx".replace("", "_"); // "_xxx"
16 ở trên không hoạt động khi biểu thức chính quy chứa một nhóm được đặt tên, bởi vì trong trường hợp này,
"xxx".replace("", "_"); // "_xxx"
17 sẽ là
"xxx".replace("", "_"); // "_xxx"
07 thay vì
"xxx".replace("", "_"); // "_xxx"
03

Thay vào đó, bạn cần trích xuất một vài đối số cuối cùng dựa trên loại, bởi vì

"xxx".replace("", "_"); // "_xxx"
08 là một đối tượng trong khi
"xxx".replace("", "_"); // "_xxx"
07 là một chuỗi

Làm cách nào để thay thế một ký tự trong chuỗi JavaScript?

Phương thức replace() tìm kiếm một chuỗi cho một giá trị hoặc một biểu thức chính quy. Phương thức replace() trả về một chuỗi mới với (các) giá trị được thay thế.

Làm cách nào để thay thế 5 ký tự đầu tiên của chuỗi trong JavaScript?

Để thay thế N ký tự đầu tiên trong một chuỗi, hãy sử dụng phương thức slice(), truyền vào đó số ký tự bạn muốn thay thế làm tham số và thêm chuỗi thay thế vào trước bằng cách sử dụng . Đã sao chép. . Copied!

Làm cách nào để thay thế mọi ký tự thứ 4 trong chuỗi JavaScript?

Bạn thực hiện vòng lặp for từ ký tự đầu tiên mà bạn muốn thay thế (3 ký tự) cho đến một chữ số trước khi kết thúc và thay thế cứ sau 4 vị trí . Nếu vòng lặp for sẽ đi từ str. chiều dài và không str. chiều dài-1 đôi khi ở ký tự cuối cùng sẽ là.

Làm cách nào để thay thế một ký tự trong chuỗi trong JavaScript tại chỉ mục?

Phương pháp đầu tiên là bằng cách sử dụng phương thức substr() . Và ở cách thứ 2, chúng ta sẽ chuyển chuỗi thành mảng và thay thế ký tự tại chỉ mục. Cả hai phương pháp được mô tả dưới đây. Sử dụng phương thức substr(). Phương thức substr() được sử dụng để trích xuất một chuỗi con từ một chỉ mục bắt đầu cho trước sang một chỉ mục khác.