0

我有这个代码:

$('#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 的字段不为空时有效。

4

2 回答 2

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个位置元素的字符串

于 2013-04-20T15:20:27.530 回答
0

我相信这可能是你想要做的

var parts = $('#myTextArea').val().split('\n');
parts[4].replace(linesText[4] + '\n', "");
$('#myTextArea').val(parts.join(''));
于 2013-04-20T14:31:29.953 回答