Tôi muốn thay thế các khoảng thời gian trong chuỗi bằng% 20 cho mục đích khóa Firebase. Tôi có thể làm 1 thời gian tại một thời điểm với:Làm thế nào để thay thế tất cả các giai đoạn trong một chuỗi trong JavaScript mà không có/g?
string.replace('.', '%20')
tôi thậm chí có thể làm tất cả trong số họ với một lá cờ /g
regex:
string.replace(/\./g, '%20')
Nhưng căn cứ hỏa lực quy tắc mang lại cho tôi một lỗi:
Error saving rules - Line 5: regular expressions do not support flags other than i
Vì vậy, tôi cần một biểu thức thay thế tất cả các khoảng thời gian mà không sử dụng /g
. Tôi chỉ có thể chuỗi .replace('.', '%20')
một loạt thời gian:
string.replace('.', '%20').replace('.', '%20').replace('.', '%20').replace('.', '%20')
Nhưng tôi hy vọng có cách tốt hơn.
CẬP NHẬT: Tôi đã cố gắng string.split('.').join('%20')
, nhưng căn cứ hỏa lực ném lỗi:
Type error: Function call on target that is not a function.
Tôi đoán họ lấy ra split
chức năng trong phân tích cú pháp quy định JSON của họ.
CẬP NHẬT 2: Tôi cũng đã thử (function() {var s = auth.token.email; while (s.indexOf('.') != -1) { s = s.replace('.', '%20') } return s})()
. Firebase phàn nàn rằng các định nghĩa chức năng không được phép trong các quy tắc cơ sở dữ liệu của chúng.
CẬP NHẬT 3: Nhờ hỗ trợ tuyệt vời căn cứ hỏa lực, tôi phát hiện ra rằng string.replace
chức năng trong các quy tắc cơ sở dữ liệu của họ đã được thay với một phiên bản thay thế tất cả lần xuất hiện của chuỗi con, không chỉ là một lần xuất hiện. Vì vậy, thực sự string.replace('.', %2E')
hoạt động hoàn hảo!
Tham chiếu duy nhất tôi tìm thấy là [Vấn đề Github] (https://github.com/firebase/bolt/issues/176)… – Xufox
Có @Xufox đó là vấn đề tôi đang xử lý với –
Nếu bạn đang có kế hoạch sử dụng địa chỉ email làm chìa khóa, có các tùy chọn WAY tốt hơn để cấu trúc dữ liệu của bạn để tránh lộn xộn này hoàn toàn. Chỉ cần nói. – Jay