0
我正在研究Google表格自定義函數,該函數可以通過響應值之一來過濾調查響應。我的意圖是,我可以根據受訪者參加的活動對答案進行分類。循環正則表達式測試的意外結果
這裏的邏輯是接受一組值和一個事件字符串。該字符串確定使用哪個正則表達式,並且這些值是正在過濾的內容。
此刻,即使每個值都匹配,每隔一個測試都會返回false。我已經放置了幾條調試線,以便更容易地查看步驟,並且正如預期的那樣,每個其他測試都是失敗的。
實際上,這個函數會將過濾值作爲新數組返回(返回「values」而不是「debug」)。
function filterValuesByEvent(_values, _event) {
var count = 0;
var debug = [];
var di = 0;
var values = [];
var event_regexp;
var events = getValuesFromRangeName("event");
var responses = getCountOfResponses(events);
// takes in the hard string and converts the relevant string[] to a regexp
// regexp searches globally and ignores case
if(_event == "EVENT") {
event_regexp = new RegExp(event.join("|"), 'gi');
} else {
return "";
}
for (var i = 0; i < responses; i++) {
var re = _values[i];
var e_re = events[i];
debug[di] = "Checking " + e_re + " against " + event_regexp;
di++;
if(event_regexp.test(e_re)) {
debug[di] = "Match found";
di++;
values[count] = re;
count = count + 1;
} else {
debug[di] = "No match";
di++;
}
}
return debug;
}
調試輸出:
檢查事件對/事件|活動|展示|樂隊/ GI
找到匹配
檢查事件對/事件|活動|展示|帶/ GI
不匹配
檢查事件對/事件|活動|表演|樂隊/ GI
找到匹配
檢查事件對/事件|活動|展示|樂隊/ GI
不匹配
檢查事件對/事件|活動|展示|帶/ GI
匹配發現
這工作 - 但爲什麼呢?我把那些人認爲他們是修飾語,呼籲全球搜索忽略案件。 –
瘋狂,很高興知道。我也注意到,我可以離開'我',一切正常,只是'g'導致的問題,這與您提供的鏈接一致。 –
是的'我'國旗將正常工作,但在這種情況下測試'EVENT'&'事件'很奇怪:P。 –