当数组字段为空时,替换值不起作用

时间:2013-04-20 14:07:03

标签: javascript jquery

我有这段代码:

$('#myTextArea').val($('#myTextArea').val().replace(linesText[4] + '\n', ""));

它工作正常。在这种情况下问题是:

$('#myTextArea').val() = "\n\n33333333333\n\n\n"

和linesText就是这个数组:

0: ""
1: ""
2: "33333333333"
3: ""
4: ""
5: ""

我想要发生什么:$('#myTextArea')。val()成为“\ n \ n33333333333 \ n \ n”。

会发生什么:

$('#myTextArea').val()

变为

"\n33333333333\n\n".

发生这种情况是因为我实际上用“”代替“”+“\ n”并且它取第一个“\ n”。我想拿第四个。 如何解决这个问题? 这在linesText的字段不为空时有效。

2 个答案:

答案 0 :(得分:1)

我做了一个可能需要改进的小功能,但似乎有效:

var ok = "\n\n33333333333\n\n\n";

function replaceSymbol(dataStr, toFind, elemPos) {
    var spacing = toFind.length;
    var indexToReplace = 0 - spacing;
    var curString;
    for (var i = 0; i < elemPos; i++) {
        curString = dataStr.substr(indexToReplace + spacing);
        if (curString.indexOf(toFind) == -1) 
            return false;
        indexToReplace = indexToReplace + curString.indexOf(toFind) + spacing;
    }
    return dataStr.substr(0, indexToReplace) + dataStr.substr(indexToReplace + spacing);
}

replaceSymbol(ok, '\n', 4);

这个函数要求3个参数,字符串(ok),要替换的符号('\ n')和位置(在这种情况下是符号的第4次出现)

如果函数在位置之前/之后找不到符号,则函数返回false,而如果一切正常,函数将返回没有第N位元素的字符串

答案 1 :(得分:0)

我相信这可能就是你想做的事情

var parts = $('#myTextArea').val().split('\n');
parts[4].replace(linesText[4] + '\n', "");
$('#myTextArea').val(parts.join(''));