簡體   English   中英

如果 substring 不存在,它有什么價值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM