我有这段代码:
$('#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的字段不为空时有效。
答案 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(''));