2015-09-29 100 views
0

我有一些字符串的列表,格式如下:如何計算JavaScript中字符串開頭的連字符數?

-Category 
--Subcategory 1 
--Subcategory 2 
---Subcategory-Child 2A 

我需要計算在每個字符串的開頭連字符的數目,所以-Category將返回1,--Subcategory 1將返回2, ---Subcategory-Child 2A會返回3.我嘗試使用string.split('-').length-1哪些工作正常,除非在字符串中的其他地方有一個連字符,即對於---Subcategory-Child 2A它將返回4而不是3.什麼是最好的方法來計算連字符的數量在一開始串?

回答

1

您可以使用正則表達式只有在字符串的開始拉出連字符和計數匹配的長度

var str = '---Subcategory-Child 2A' 
 
var regex = /^(\-*)/g 
 
console.log(regex.exec(str)[1].length) // 3

+0

如果正則表達式返回null,使用'*'(零或多個)而不是'+'(一個或多個)會更安全以避免數組訪問錯誤。 –

+0

@SteveHansell - true,並更新 – Jamiec

+0

撇號:'regex.lastIndex'也將在.exec()觸發後包含正確的答案... – dandavis

0

更換非連字符與空間,然後記號化然後獲取第一個標記的長度。

string.replace(/[^\-]/g, ' ').split(' ')[0].length