如何使用jquery将插入符号转换为上标

时间:2013-02-11 13:30:45

标签: jquery text superscript

我们数学论坛上的很多用户使用插入符号输入 n次幂,例如x^(4y)

我们想要替换插入符号并使用上标,将数字和变量包装在插入符号后面。因此x ^(4y)变为x (4y)

规则:

  1. 如果插入符号后面没有括号,则只标注下一个 字符。
  2. 如果有一个开口支架,则上标直到收盘。
  3. 这是post with different caret versions

    当然我们可以使用很多js-libraries,但是不可能用jquery做这个单文本转换任务吗?

    有没有人建这样的东西?

    谢谢。

1 个答案:

答案 0 :(得分:2)

我不认为这是jQuery的工作。使用普通的javascript迭代文本虽然冗长,但可能是最好的方法:

function superify(input) {
    if(!input) return input;

    var output = [];
    var buffer;
    for(var i=0;i<input.length;i++) {
        var current = input[i];

        if(buffer) {
            if(current === ')') {
                buffer.push('</sup>');
                output.push.apply(output, buffer);
                buffer = null;
            } else {
                buffer.push(current);
            }
        }
        else if(current === '^') {
            var next = input[++i]; 
            if(next === '(') {
                buffer = ['<sup>'];
            } else {
                output.push.apply(output, ['<sup>', next, '</sup>']);
            }   
        } else {
            output.push(current);
        }
    }

    return output.join('');
}

(代码没有经过充分测试。通过几个例子来看看它似乎有效)