19 条回复  ·  388 次点击
Coder2 初学 2024-10-28 02:16:29

灵魂三问:

大佬们写代码都不用时间的吗?

都不出bug的吗?

这么为所欲为的吗?

user705 初学 2024-10-28 02:16:29

确实牛,我让Claude用 html 实现了


<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>表格转 Markdown 转换器</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f0f0f0;
}
.markdown-converter {
background: white;
padding: 30px;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
width: 800px;
max-width: 95%;
}
.markdown-converter textarea {
width: 100%;
height: 200px; /* 增加高度 */
margin: 15px 0;
padding: 12px;
border: 1px solid #ddd;
border-radius: 6px;
resize: vertical;
font-size: 14px;
}
.markdown-converter button {
background: #4CAF50;
color: white;
border: none;
padding: 12px 20px;
border-radius: 6px;
cursor: pointer;
width: 100%;
margin: 10px 0;
transition: background-color 0.3s;
font-size: 16px;
}
.markdown-converter button:hover {
background: #45a049;
}
.markdown-converter button:disabled {
background: #cccccc;
cursor: not-allowed;
}
.markdown-converter h3 {
margin: 0 0 15px 0;
font-size: 20px;
}
.button-group {
display: flex;
gap: 10px;
}
.button-group button {
flex: 1;
}
.success-toast {
position: fixed;
bottom: 30px;
right: 30px;
background: #4CAF50;
color: white;
padding: 15px 25px;
border-radius: 6px;
z-index: 10001;
animation: fadeInOut 2s ease-in-out;
font-size: 16px;
}
@keyframes fadeInOut {
0% { opacity: 0; transform: translateY(20px); }
20% { opacity: 1; transform: translateY(0); }
80% { opacity: 1; transform: translateY(0); }
100% { opacity: 0; transform: translateY(-20px); }
}
</style>
</head>
<body>
<div class="markdown-converter">
<h3>表格转 Markdown 转换器</h3>
<div class="button-group">
<button id="pasteBtn">从剪贴板粘贴</button>
<button id="clearBtn">清空内容</button>
</div>
<textarea id="tableInput" placeholder="在这里粘贴表格内容..."></textarea>
<button id="convertBtn">转换为Markdown</button>
<h3>转换结果:</h3>
<textarea id="markdownOutput" readonly placeholder="转换后的Markdown内容会显示在这里"></textarea>
<button id="copyBtn">复制到剪贴板</button>
</div>

<script>
function showToast(message) {
const toast = document.createElement('div');
toast.className = 'success-toast';
toast.textContent = message;
document.body.appendChild(toast);

setTimeout(() => {
document.body.removeChild(toast);
}, 2000);
}

function convertToMarkdown(tableText) {
if (!tableText.trim()) return '';

// 检测分隔符
const firstLine = tableText.trim().split('\n')[0];
const separator = firstLine.includes('\t') ? '\t' : ',';

let rows = tableText.trim().split('\n').map(row => {
if (separator === ',') {
// 处理 CSV 格式(考虑引号内的逗号)
const cells = [];
let cell = '';
let inQuotes = false;
for (let char of row) {
if (char === '"') {
inQuotes = !inQuotes;
} else if (char === ',' && !inQuotes) {
cells.push(cell.trim());
cell = '';
} else {
cell += char;
}
}
cells.push(cell.trim());
return cells;
} else {
// 处理制表符分隔
return row.split(separator).map(cell => cell.trim());
}
});

if (rows.length === 0) return '';

const maxCols = Math.max(...rows.map(row => row.length));

rows.forEach(row => {
while (row.length < maxCols) {
row.push('');
}
});

let markdown = '';
markdown += '| ' + rows[0].join(' | ') + ' |\n';
markdown += '| ' + Array(maxCols).fill('---').join(' | ') + ' |\n';
for (let i = 1; i < rows.length; i++) {
markdown += '| ' + rows[i].join(' | ') + ' |\n';
}

return markdown;
}

document.getElementById('pasteBtn').addEventListener('click', async () => {
try {
const text = await navigator.clipboard.readText();
const tableInput = document.getElementById('tableInput');
tableInput.value = text;
tableInput.dispatchEvent(new Event('input'));
showToast('已粘贴剪贴板内容');
} catch (err) {
showToast('无法访问剪贴板,请使用Ctrl+V粘贴');
}
});

document.getElementById('clearBtn').addEventListener('click', () => {
const tableInput = document.getElementById('tableInput');
tableInput.value = '';
tableInput.dispatchEvent(new Event('input'));
document.getElementById('markdownOutput').value = '';
showToast('已清空所有内容');
});

document.getElementById('convertBtn').addEventListener('click', () => {
const input = document.getElementById('tableInput').value;
const markdown = convertToMarkdown(input);
document.getElementById('markdownOutput').value = markdown;
if (markdown) {
showToast('转换完成');
} else {
showToast('转换失败,请检查输入');
}
});

document.getElementById('copyBtn').addEventListener('click', () => {
const output = document.getElementById('markdownOutput');
output.select();
document.execCommand('copy');
showToast('已复制到剪贴板');
});

// 添加输入框内容变化监听
document.getElementById('tableInput').addEventListener('input', (e) => {
const hasContent = e.target.value.trim().length > 0;
document.getElementById('convertBtn').disabled = !hasContent;
document.getElementById('clearBtn').disabled = !hasContent;
});

// 初始化函数
function init() {
const tableInput = document.getElementById('tableInput');
const convertBtn = document.getElementById('convertBtn');
const clearBtn = document.getElementById('clearBtn');

// 设置初始按钮状态
const hasContent = tableInput.value.trim().length > 0;
convertBtn.disabled = !hasContent;
clearBtn.disabled = !hasContent;
}

// 页面加载完成后执行初始化
window.addEventListener('load', init);
</script>
</body>
</html>

Dsp 初学 2024-10-28 02:16:29

确实比较方便。AI改变了互联网

emberzhang 小成 2024-10-29 04:18:07

12
返回顶部