[英]Why does firebase “on” “value” not run the listener function when the reference doesn't exist, but “once” “value” does?
[英]What value does a substring have if it doesn't exist?
我有一個字符串msg
。 我想檢查字符串中的第三個字符是否存在。
我試過if (msg.substring(3, 4) == undefined) {... }
但這不起作用。 如果 substring 不存在,它會等於什么?
如果字符串包含三個字符,則字符串的第三個字符存在,因此您要查找的檢查是
msg.length >= 3
至於您關於不存在的 ZE83AED3DDF4667DEC0DAAAACB2BB3BE0BZ 的問題,您會得到空字符串,您可以在控制台中對其進行測試:
> "dog".substring(8, 13)
''
值得一提的是,索引和獲取字符長度充滿了與 Unicode 相關的困難,因為 JavaScript 認為的字符並不是真正的字符,而是 UTF-16 字符代碼。 所以要注意:
> "😬🤔".length
4
> "😬🤔"[1]
'�'
> "😬🤔"[2]
'�'
> [..."😬🤔"][1]
'🤔'
因此,如果您正在尋找更好的角色,請執行以下操作:
[...msg].length >= 3
這仍然不適用於 Unicode 字素簇,但它至少比獲取字符串的實際長度更好,后者在 JavaScript 中被破壞(除非你正在處理他們所謂的 BMP 字符)。
從文檔中:
Any argument value that is less than 0 or greater than stringName.length is treated as if it were 0 and stringName.length, respectively.
這不是超級直觀,但您的示例將是一個空字符串""
(或者如果第一個 position 有一個字符並且您添加了更大的間隙,它將是一個比 indexStart 和 indexEnd 之間的空格短的字符串:
const str = 'hi';
console.log(str.substring(1, 4)); // is "i"
您可以使用標准屬性訪問器來獲取字符或undefined
。
const string0 = '', string1 = 'a', string2 = 'ab', string3 = 'abc', string4 = 'abcd'; console.log(string0[2]); // undefined console.log(string1[2]); // undefined console.log(string2[2]); // undefined console.log(string3[2]); // c console.log(string4[2]); // c
如果字符串不包含足夠的字母,則子字符串不會返回任何內容。 您可以嘗試使用字符串作為數組,如果索引不存在則返回 undefined。
if ( msg[2] !== undefined ) {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.