2013-07-29 50 views
1

關於我的代碼的行爲只是一個簡短的問題:我只是想刪除JavaScript中的字符串的第一個和最後一個字符。所以這是我的代碼是什麼樣子(它的實際工作是應該的工作方式):爲什麼我的子字符串在寫這樣的時候工作?

var element = "<LightName>"; 
element = element.substring(1, element.length - 1); 

但爲什麼使用-1時,刪除最後一個字符呢?從理論上講,element.length時的字符串長度在理論上應該仍然是11(因爲子字符串尚未執行),所以我把它告訴給索引1開始的子字符串,長度爲10.

可能是一個相當混亂的問題,但也許有人能clearify一點點......

回答

7

this link,則子方法的簽名是:

string.substring(from, to) 

這意味着第二個參數不是子字符串的長度,而是結束位置。

+0

哦,好吧,好像我誤解了子字符串。如果是定位,那絕對是有道理的。謝謝! – beta

+1

OP的想法是[substr](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) – usr2564301

+0

@Jongware這是對的,這是因爲我混合這與PHP。 +1,因爲我甚至都不知道JS中有一個等價的方法。 – beta

1

參數傳遞給子是:substring(FROM_INDEX, TO_INDEX)

指數從0開始,直到去length - 1

如果字符串是11個字符長度的字符串的索引開始在0和在10處

結束因此,如果字符串是"abcd",你正在服用的子串從索引1至4(長度) - 1,所以你得到"bcd"

在你的情況(跳過括號中):

var element = "<LightName>"; 
element = element.substring(1, element.length - 1); 
+0

感謝您的回覆,但它不是-2;)。但我現在明白了,這是因爲第二個參數不是長度,而是位置。 – beta

+1

很高興提供幫助。一個錯字錯誤:) –

1

那麼你會返回除字符串的第一個和最後一個字符以外的所有內容。由於你從0開始,如果你從總長中減去1,你會得到正確的結果。

2

.substring以開始位置和結束位置作爲參數。 .substr已經偏移量和長度作爲參數

例如:

var a = "abcdefghijklmnopqrstuvwxyz" 
var s = a.substring(5, 11) // fghijk 
var s2 = a.substr(5, 11) // fghijklmnop 
1

因爲你的字符串的長度是11你說的功能,從索引1得到子索引(11 - 1)10但是,子串不包含最後一個索引。因此,有效地你的子指數從1到9的索引

1
.substring(first,second); 

第一個參數是使用開始索引爲0 第二個參數開始的位置是結束位置,但它是唯一的手段,從第一到第二,但第二個不包括在內。

相關問題