![](/img/trans.png)
[英]Javascript - Optimized way to extract a subset of elements from an array, based on specific criteria
[英]Efficient way to extract a substring from string based on specific criteria?
我有一個字符串列表,取自許多CSSRule的selectorText,這些字符串具有一般形式(不確定該RegEx):
".selector1 .elementClass[, ]*"
具體示例如下:
".point"
".point.lackofclearance .stand_b, .point.lackofclearance .stand_c"
".point .path_a,.point .path,.point .stand"
".blink_on .point.direction_open .stand"
".blink_off .point.a_in_ratc_selection .path_a, .blink_off .point
.path.a_in_ratc_selection"
現在,從這樣的字符串中,有趣的是那些包含字符串“ point
”的字符串,而在那些包含字符串“ point
”的字符串中,我.point.
字符串感興趣,該子字符串緊接在“ .point.
”之后和下一個空格字符之前。 它們代表我想閱讀的元素狀態。
例如:
從“ .point
”沒有要提取的子字符串,從“ .point .path_a,.point .path,.point .stand
”也沒有要提取的內容,因為“ .point.
”不作為一個整體存在完全沒有 但是 ,“ .point.lackofclearance .stand_b, .point.lackofclearance .stand_c
”是.point.lackofclearance .stand_b, .point.lackofclearance .stand_c
我想提取“ lackofclearance
”(第一次和第二次出現)。
我已經有了一個主意,那就是:
point
”是否存在 ,
'
'(空格字符) .point
。”的結果子字符串, .point
用'分隔.
'(點字符) 是否有任何其他機構提出其他建議(一種別致的建議),或者更短或更有效,或者兩者兼而有之?...必須在JavaScript中完成,在Chrome中,可以使用jQuery。
var str = ".point.lackofclearance .stand_b, .point.lackofclearance .stand_c";
var re = /\.point\.(\w+)/g;
var result = [];
var m;
while (m = re.exec(str)) {
result.push(m[1]);
}
// result == ['lackofclearance', 'lackofclearance']
您可以輕松地將正則表達式用於此類任務。
var m = selectorText.match(/\.point.\w+/)
for (var i=0; m!=null && i<m.length; i++)
console.log(m[i].substring(7)); // remove ".point." part
正則表達式很棒。 您只需尋找文字".point."
后跟一個單詞"\\w+"
。 用parens (\\w+)
捕獲該單詞。 然后在字符串上調用match
,傳入正則表達式,然后返回返回結果的第二項,即捕獲的子組詞,即您想要的東西。
var whatWeFound = ".point.omgyesawesome .foo".match(/\.point\.(\w+)/)[1];
console.log(whatWeFound); //=> "omgyesawesome"
var strings = "YOUR_CLASS_STRINGS".split(" ");
var regex = /\.point\.(\S+)/;
var arr = [];
for(x in strings){
if(regex_string = strings[x].match(regex)){
arr.push(regex_string[1]);
}
}
這應該導致arr
僅填充有類名稱.point
。
根據上面給出的答案,我對RegEx進行了調整以滿足自己的需求,而這個似乎很有效。
/\.point\.(.+\s)/
應用時
".point.vacancy_unknown.direction_open .path_a".match(/\.point\.(.+\s)/)
我得到以下結果。
[".point.vacancy_unknown.direction_open ", "vacancy_unknown.direction_open "]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.