Перейти к основному содержимому
clawam tools
Инструменты Документы Daoark EN Главная Главная / Текстовые инструменты›/g, '>'); } form.addEventListener('submit', function(e) { e.preventDefault(); clearError(); clearResult(); var text = document.getElementById('text').value; var rulesText = document.getElementById('rules').value; if (!text) { showError('请输入原文本'); return; } if (!rulesText.trim()) { showError('请输入替换规则'); return; } var isRegex = document.getElementById('opt_regex').checked; var caseSens = document.getElementById('opt_case').checked; var isWord = document.getElementById('opt_word').checked; var flags = 'g' + (caseSens ? '' : 'i'); var lines = rulesText.split('\n'); var rules = []; var errors = []; for (var i = 0; i < lines.length; i++) { var line = lines[i]; var t = line.trim(); if (!t || t.indexOf('#') === 0) continue; var eq = t.indexOf('='); if (eq < 0) { errors.push('第 ' + (i+1) + ' 行缺少 = 分隔符: ' + t); continue; } var find = t.substring(0, eq); var rep = t.substring(eq + 1); if (isRegex) { try { var wordBoundary = isWord ? '\\b' : ''; var p = new RegExp(wordBoundary + find + wordBoundary, flags); rules.push({ find: p, rep: rep, raw: t }); } catch(e) { errors.push('第 ' + (i+1) + ' 行正则错误: ' + e.message); } } else { if (isWord) rules.push({ find: new RegExp('\\b' + find.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '\\b', flags), rep: rep, raw: t }); else rules.push({ find: null, literal: find, rep: rep, raw: t, caseSens: caseSens }); } } if (errors.length > 0 && rules.length === 0) { showError(errors.join('; ')); return; } var output = text; var totalHits = 0; var ruleStats = []; for (var j = 0; j < rules.length; j++) { var r = rules[j]; var before = output; if (r.find) { output = output.replace(r.find, function() { var args = Array.prototype.slice.call(arguments); // 反向引用支持 var rep = r.rep; rep = rep.replace(/\\(\d+)/g, function(_, n) { return args[parseInt(n)] || ''; }); return rep; }); } else { var idx = 0; var cnt = 0; if (r.caseSens) { while ((idx = output.indexOf(r.literal, idx)) !== -1) { output = output.substring(0, idx) + r.rep + output.substring(idx + r.literal.length); idx += r.rep.length; cnt++; } } else { var low = output.toLowerCase(); var lowFind = r.literal.toLowerCase(); while ((idx = low.indexOf(lowFind, idx)) !== -1) { output = output.substring(0, idx) + r.rep + output.substring(idx + r.literal.length); low = output.toLowerCase(); idx += r.rep.length; cnt++; } } } var hits = (before === output ? 0 : 1); // 字面模式: 数次数 if (r.literal !== undefined) { var c = 0; var k = 0; if (r.caseSens) { while ((k = before.indexOf(r.literal, k)) !== -1) { c++; k += r.literal.length; } } else { var lb = before.toLowerCase(); var lf = r.literal.toLowerCase(); while ((k = lb.indexOf(lf, k)) !== -1) { c++; k += lf.length; } } hits = c; } else { // 正则模式: 算 match 数 var m = before.match(r.find); hits = m ? m.length : 0; } totalHits += hits; ruleStats.push(r.raw + ' → ' + hits + ' 处'); } var html = '
' + escapeHtml(output) + '
'; resultContent.innerHTML = html; resultMeta.textContent = '应用规则: ' + rules.length + ' 条, 命中 ' + totalHits + ' 处 | ' + ruleStats.slice(0,3).join(' | ') + (ruleStats.length > 3 ? ' ...' : '') + (errors.length ? ' | 错误: ' + errors.length : ''); resultArea.classList.add('show'); var copyBtn = document.getElementById('btn-copy-out'); if (copyBtn) copyBtn.addEventListener('click', function() { navigator.clipboard.writeText(output).then(function() { copyBtn.textContent = '已复制'; setTimeout(function() { copyBtn.textContent = '复制结果'; }, 1000); }); }); }); btnClear.addEventListener('click', function() { form.reset(); document.getElementById('opt_case').checked = false; clearError(); clearResult(); }); })();
clawam tools

clawam.com · Agent JSON API · built by Daoark

Navegação

Инструменты Документы Daoark

Machine Readable

sitemap.xml robots.txt

苏ICP备2025187298号-28 · clawam.com · built by Daoark