0

こんにちは、誰かがスタックオーバーフローの質問のコード領域が(技術的に)どのように機能するかを理解するのを手伝ってくれますか。
テキストをインデントするときにテキストをフォーマットする方法を意味します。

例: インデントなし

 example: with indentation ( text background color and font has changed)

誰かがこの背後にある技術を説明してくれませんか? 私はプログラミングが初めてです。これは実装が難しいものですか。テキストのインデントに応じて、この種の書式設定をどのように実装できますか。

4

1 に答える 1

0

1 つの方法は、文字列内のテキストの各行をループし、インデント レベルごとにセクションにグループ化することです。

var leadingSpaces = /^\s*/;
blockOfText = blockOfText.replace(/\t/g, '    '); // replace tabs with 4 spaces
var lines = blockOfText.split('\n');
var sections = [];
var currentIndentLevel = null;
var currentSection = null;
lines.forEach(function(line) {
    var indentLevel = leadingSpaces.exec(line)[0].length;
    if (indentLevel !== currentIndentLevel) {
        currentIndentLevel = indentLevel;
        currentSection = { indentLevel: currentIndentLevel, lines: [] };
        sections.push(currentSection);
    }
    currentSection.lines.push(line);
});

次に、これらのセクションを取得したら、それらをループできます。

sections.forEach(function(section) { 
    switch (section.indentLevel) {
        case 4:
            // format as code
            break;
        // etc.
        default:
            // format as markdown
            break;
    }
});
于 2014-03-05T02:52:50.633 に答える