Open1

テキストファイルの連続置換

まめせぶんまめせぶん
import fs from 'fs/promises';

// 変換リストを読み込む関数
async function loadConversionList(filePath) {
    const data = await fs.readFile(filePath, 'utf-8');
    const lines = data.split('\n');
    const conversionMap = new Map();

    for (const line of lines) {
        const [before, after] = line.split(',');
        if (before && after) {
            conversionMap.set(before.trim(), after.trim());
        }
    }

    return conversionMap;
}

// テキストファイルの語句を置換する関数
async function replaceWordsInFile(inputFilePath, outputFilePath, conversionListPath) {
    const conversionMap = await loadConversionList(conversionListPath);
    let text = await fs.readFile(inputFilePath, 'utf-8');

    for (const [before, after] of conversionMap.entries()) {
        const regex = new RegExp(before, 'g');
        text = text.replace(regex, after);
    }

    await fs.writeFile(outputFilePath, text, 'utf-8');
}

// 使用例
const inputFilePath = 'input.txt';
const outputFilePath = 'output.txt';
const conversionListPath = 'conversion_list.txt';

replaceWordsInFile(inputFilePath, outputFilePath, conversionListPath)
    .then(() => console.log('置換が完了しました。'))
    .catch(err => console.error('エラーが発生しました:', err));