Không có cách nào tốt nhất để làm điều này. Bạn có thể làm theo bất kỳ cách nào bạn thích, miễn là kết quả phù hợp với yêu cầu của bạn. Để minh họa, tôi đã tạo ra nhiều ví dụ khác nhau, tất cả sẽ cung cấp cùng một kết quả cuối cùng
Hầu hết các câu trả lời khác trên trang này bỏ qua yêu cầu ký tự trường hợp trên.
Đây là giải pháp nhanh nhất của tôi và dễ đọc nhất. Về cơ bản, nó làm giống như giải pháp được chấp nhận, ngoại trừ nó nhanh hơn một chút.fastest solution and most readable. It basically does the same as the accepted solution, except it is a bit faster.
function readableRandomStringMaker[length] {
for [var s=''; s.length < length; s += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.charAt[Math.random[]*62|0]];
return s;
}
console.log[readableRandomStringMaker[length]];
// e3cbN
Đây là một phiên bản đệ quy nhỏ gọn, không dễ đọc:compact, recursive version which is much less readable:
const compactRandomStringMaker = [length] => length-- && "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62|0] + [compactRandomStringMaker[length]||""];
console.log[compactRandomStringMaker[5]];
// DVudj
Một lớp lót nhỏ gọn hơn:more compact one-liner:
Array[5].fill[].map[[]=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62]].join[""]
// 12oEZ
Một biến thể của những điều trên:
" ".replaceAll[" ",[]=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62]]
Một lớp lót nhỏ gọn nhất, nhưng không hiệu quả và không thể đọc được - nó thêm các ký tự ngẫu nhiên và loại bỏ các ký tự bất hợp pháp cho đến khi độ dài là L:most compact one-liner, but inefficient and unreadable - it adds random characters and removes illegal characters until length is l:
[[l,f=[p='']=>p.lengthf[]][5]
Một phiên bản an toàn về mặt mật mã, là lãng phí entropy cho sự nhỏ gọn và là một sự lãng phí bất kể vì chuỗi được tạo quá ngắn:
[...crypto.getRandomValues[new Uint8Array[999]]].map[[c]=>String.fromCharCode[c].replace[/[^a-z0-9]/i,'']].join[""].substr[0,5]
// 8fzPq
Hoặc, không có tính năng chiều dài, nó thậm chí còn ngắn hơn:
[[f=[p='']=>p.lengthf[]][]
// EV6c9
Sau đó, một chút thách thức hơn - sử dụng hàm mũi tên đệ quy không tên:nameless recursive arrow function:
[[l,s=[[l]=>l--&&"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62|0]+[s[l]||""]]] => s[l]][5];
// qzal4
Đây là một biến "ma thuật" cung cấp một ký tự ngẫu nhiên mỗi khi bạn truy cập nó:"magic" variable which provides a random character every time you access it:
const c = new class { [Symbol.toPrimitive][] { return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62|0] } };
console.log[c+c+c+c+c];
// AgMnz
Một biến thể đơn giản hơn của những điều trên:
const c=[]=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".charAt[Math.random[]*62|0];
c[]+c[]+c[]+c[]+c[];
// 6Qadw
Đôi khi, các lập trình viên yêu cầu tạo một chuỗi được tạo bằng cách chọn các ký tự ngẫu nhiên. Trình tạo chuỗi ngẫu nhiên giúp tạo một chuỗi ngẫu nhiên bằng cách chọn một số ký tự một cách ngẫu nhiên. Chuỗi này có thể là một chuỗi ký tự đơn giản hoặc chuỗi alpha-numeric.
Trong chương này, bạn sẽ nhận được các phương thức khác nhau để tạo một trình tạo chuỗi ngẫu nhiên. Chúng tôi sẽ tạo một chương trình Trình tạo chuỗi ngẫu nhiên bằng ngôn ngữ lập trình JavaScript để tạo một chuỗi ngẫu nhiên. Mỗi lần nó sẽ tạo ra một chuỗi mới. Đối với điều này, chúng tôi sẽ sử dụng hàm math.random [] của javascript.Math.random[] function of JavaScript.
Sử dụng Trình tạo chuỗi ngẫu nhiên
Hầu hết thời gian, bạn đã thấy mã CAPTCHA trong các biểu mẫu web cần thiết để nhập trước khi gửi biểu mẫu để xác minh robot người dùng. Trình tạo chuỗi ngẫu nhiên sẽ giúp bạn tạo mã CAPTCHA này cho các lập trình viên. Ngày nay, nó được sử dụng rộng rãi trong các hình thức web cho mục đích bảo mật.
Hãy nhớ rằng mã CAPTCHA chứa một chuỗi các ký tự ngẫu nhiên. Nó có thể là sự kết hợp của các ký tự chữ cái hoặc các ký tự âm alpha.
Loại trình tạo chuỗi ngẫu nhiên mà chúng tôi đã thảo luận trong chương này
Bạn sẽ thấy hai loại Trình tạo chuỗi ngẫu nhiên:
- Tạo chuỗi ngẫu nhiên đơn giản
- Tạo chuỗi alpha-numeric ngẫu nhiên
Chúng tôi có hai loại trình tạo chuỗi này. Trong loại trình tạo chuỗi ngẫu nhiên đầu tiên này, chúng tôi sẽ tạo một chương trình JavaScript của Trình tạo chuỗi ngẫu nhiên sẽ chỉ tạo chuỗi chữ cái.
Ở đầu bên kia, trong loại trình tạo chuỗi thứ hai, chúng tôi sẽ tạo một chương trình JavaScript để tạo các chuỗi alpha-numeric ngẫu nhiên. Xem các ví dụ cho cả hai trình tạo chuỗi một cách chi tiết:
Tạo một chuỗi ngẫu nhiên
Ở đây, chúng tôi sẽ tạo một chương trình để tạo một chuỗi ngẫu nhiên:
Tiếp cận 1:
Cách tiếp cận này sẽ tạo ra một chuỗi ngẫu nhiên đơn giản bằng cách chọn một số ký tự một cách ngẫu nhiên với độ dài được chỉ định. Đây sẽ là một chuỗi đơn giản thay vì một chuỗi alpha-numeric. Làm theo các bước dưới đây:
- Tạo một chức năng do người dùng xác định và xác định một biến có tất cả các bảng chữ cái tiếng Anh bằng các chữ cái nhỏ và viết hoa.
- Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
- Khai báo một biến trống mới [var ngẫu nhiênString = '';] để giữ chuỗi được tạo.
- Bây giờ, đi qua chuỗi bằng cách sử dụng cho vòng lặp. Nó sẽ tạo ra một ký tự mới trong mỗi lần lặp.
- Bên trong vòng lặp này, hãy sử dụng phương thức math.random [] của javascript để tạo một ký tự ngẫu nhiên từ biến chuỗi được chỉ định ở trên [A-Z, A-Z] bằng cách tính toán một chỉ mục ngẫu nhiên.
- Phương pháp sàn [] để làm tròn giá trị. Điều này sẽ được sử dụng như Math.Floor [Math.Random [] * ký tự.LEPT].
Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:
Sao chép mã
Kiểm tra nó ngay bây giờChạy mã trong trình duyệt của bạn và nhận kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:
Đầu ra 1
Đầu ra 2
Nhấp vào nút này tạo nút chuỗi ngẫu nhiên và điều này sẽ tạo ra một chuỗi ngẫu nhiên cho bạn.Generate Random String button, and this will generate a random string for you.
Đầu ra 3
Bất cứ khi nào bạn nhấp vào nút này, nó sẽ tạo ra một mẫu các ký tự ngẫu nhiên mới [chuỗi ngẫu nhiên] có độ dài 7. Xem ảnh chụp màn hình bên dưới:
Tạo chuỗi alpha-numeric ngẫu nhiên
Có hai cách tiếp cận được thảo luận dưới đây để tạo ra một chuỗi alpha-numeric ngẫu nhiên:
Tiếp cận 1:
Cách tiếp cận này sẽ tạo ra một chuỗi ngẫu nhiên đơn giản bằng cách chọn một số ký tự một cách ngẫu nhiên với độ dài được chỉ định. Đây sẽ là một chuỗi đơn giản thay vì một chuỗi alpha-numeric. Làm theo các bước dưới đây:
- Tạo một chức năng do người dùng xác định và xác định một biến có tất cả các bảng chữ cái tiếng Anh bằng các chữ cái nhỏ và viết hoa.
- Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
- Xác định độ dài cho chuỗi ngẫu nhiên mới được tạo.
- Khai báo một biến trống mới [var ngẫu nhiênString = '';] để giữ chuỗi được tạo.
- Bây giờ, đi qua chuỗi bằng cách sử dụng cho vòng lặp. Nó sẽ tạo ra một ký tự mới trong mỗi lần lặp.
- Bên trong vòng lặp này, hãy sử dụng phương thức math.random [] của javascript để tạo một ký tự ngẫu nhiên từ biến chuỗi được chỉ định ở trên [A-Z, A-Z] bằng cách tính toán một chỉ mục ngẫu nhiên.
- Phương pháp sàn [] để làm tròn giá trị. Điều này sẽ được sử dụng như Math.Floor [Math.Random [] * ký tự.LEPT].
Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:
Sao chép mã
Kiểm tra nó ngay bây giờChạy mã trong trình duyệt của bạn và nhận kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:
Đầu ra 1
Đầu ra 2
Nhấp vào nút này tạo nút chuỗi ngẫu nhiên và điều này sẽ tạo ra một chuỗi ngẫu nhiên cho bạn.Generate Random String button, and this will generate a random string for you.
Đầu ra 3
Bất cứ khi nào bạn nhấp vào nút này, nó sẽ tạo ra một mẫu các ký tự ngẫu nhiên mới [chuỗi ngẫu nhiên] có độ dài 7. Xem ảnh chụp màn hình bên dưới:
Tiếp cận 2:
Bây giờ, chúng ta có một cách tiếp cận khác sẽ tạo ra một chuỗi alpha-numeric với độ dài được chỉ định. Đó là một cách tiếp cận rất ngắn để tạo ra một chuỗi ngẫu nhiên. Điều này không yêu cầu quá nhiều mã dài. Trong phương pháp này, chúng tôi sẽ không chỉ định độ dài cho chuỗi mới được tạo. Nó sẽ mất độ dài 10 hoặc 11 của chuỗi mới.
Thực hiện theo các bước cơ bản để tạo chuỗi Alpha-Numeric ngẫu nhiên:
- Tạo một chức năng do người dùng xác định có sẽ bao gồm tất cả các bước dưới đây bên trong nó.
- Đầu tiên, sử dụng phương thức ngẫu nhiên [] để tạo một số ngẫu nhiên.random[] method to generate a random number.
- Bây giờ, chúng tôi sẽ sử dụng phương pháp tích hợp của JavaScript ToString [36] để chuyển đổi cơ sở thành 36 [26 chars + 0 thành 9]. Trong 36 ký tự này, nó có các ký tự Alpha-Numeric bao gồm 26 bảng chữ cái và 0 đến 9 số.toString[36] to convert the base to 36 [26 chars + 0 to 9]. In these 36 characters it has alpha-numeric characters includes 26 alphabets and 0 to 9 numbers.
- Cuối cùng, sử dụng lát cắt [] để có được phần của chuỗi được bắt đầu từ vị trí 2.slice[] to get the part of string that is started from position 2.
Chuyển đổi các bước trên trong triển khai mã thực tế để xem kết quả. Nhìn vào mã JavaScript bên dưới:
Sao chép mã
Kiểm tra nó ngay bây giờĐầu ra 1
Lưu tệp và chạy mã trên trong trình duyệt của bạn. Ban đầu, bạn sẽ nhận được kết quả giống như được đưa ra trong ảnh chụp màn hình dưới đây:
Đầu ra 2
Tại đây, nhấp vào nút Tạo chuỗi để tạo chuỗi Alpha-Numeric ngẫu nhiên và xem đầu ra:Generate String button to generate the random alpha-numeric string and see the output:
Đầu ra 3
Nó sẽ tạo ra một mẫu mới mỗi lần khi bạn nhấp vào nút tạo chuỗi này. Nhấp và kiểm tra các mẫu chuỗi Alpha-Numeric khác nhau:Generate String button. Click and check different alpha-numeric string patterns:
Note:
Trong cách tiếp cận 1, bạn có thể xác định độ dài [số lượng ký tự] cho chuỗi ngẫu nhiên mới. Nhưng mà,
Trong cách tiếp cận 2, bạn không thể xác định độ dài của chuỗi mới sẽ được tạo. Sử dụng bất kỳ phương pháp nào trong trang web của bạn theo yêu cầu của bạn.