判斷字符串 str1 是否包含於 str2 中,類似 SQL LIKE '%str1%'。
function like(str1, str2) {
// str1 為模式,str2 為目標文本
return str2.includes(str1); // 現代瀏覽器推薦
// 兼容寫法:return str2.indexOf(str1) !== -1;
}
function sqlLike(pattern, text) {
// 將 SQL LIKE 模式轉為正則:% → .* _ → .
const regexPattern = pattern
.replace(/[%]/g, '.*')
.replace(/[_]/g, '.');
const regex = new RegExp('^' + regexPattern + '$');
return regex.test(text);
}
// 示例
sqlLike('A%B_C', 'AXXXBYC'); // true
sqlLike('user_%', 'user_123'); // true
_.includes(str, substr)。npm install sqlike,支持完整 LIKE 語法。| 方法 | 時間複雜度 | 適用場景 |
|---|---|---|
| includes/indexOf | O(n*m) | 簡單子串包含判斷,性能最好 |
| 正則表達式 | O(n*m) 視模式 | 需要通配符 % _ 匹配 |
| 第三方庫 | 視實現 | 複雜 SQL LIKE 遷移、轉義處理 |
includes (ES6) 或 indexOf。% _ 通配符時,封裝 sqlLike 函數統一處理轉義。