Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据ln#和字符查找并更改字符串中的文本#_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 根据ln#和字符查找并更改字符串中的文本#

Javascript 根据ln#和字符查找并更改字符串中的文本#,javascript,jquery,regex,Javascript,Jquery,Regex,如何在文本中位于特定Ln#和character#的单词前加字符 示例: usersCode.split("\n")[lineNumber - 1].replace(usersCode.split("\n")[lineNumber - 1].substr(29, 39), MyObj.first_name.value); 用例是当一个人将代码输入到文本区域(比如JSFIDLE)时,我会找到并替换他们的一些变量。我知道这些变量的开始和结束的行和字符位置 示例文本: var usersCode =

如何在文本中位于特定Ln#和character#的单词前加字符

示例:

usersCode.split("\n")[lineNumber - 1].replace(usersCode.split("\n")[lineNumber - 1].substr(29, 39), MyObj.first_name.value);
用例是当一个人将代码输入到文本区域(比如JSFIDLE)时,我会找到并替换他们的一些变量。我知道这些变量的开始和结束的行和字符位置

示例文本:

var usersCode = $('textarea').val();
控制台日志记录
usersCode

print "My first name is: " + first_name
print "This is awesome."
print "My last name is: " + last_name
我怎样才能找到从Ln0开始,Char 29,到Ln0结束,Char 39(first_name)的单词,并将其转换成
MyObj.first_name.value

print "My first name is: " + MyObj.first_name.value
print "This is awesome."
print "My last name is: " + last_name
也许我可以使用一个正则表达式,将“行号”转换为计数
\n
出现的次数?然后按字符数移动指针


我必须使用Ln#和Char#来处理许多细节,这里我将不进行讨论。我知道如果我不局限于使用Ln#和Ch#,会有许多更简单的选择。

如果您只是尝试替换
名字
和姓氏
最简单的解决方案是使用
替换()
,例如:

usersCode.replace("first_name", MyObj.first_name.value);
usersCode.replace("last_name", MyObj.last_name.value);
如果你坚持要做行号和字符号特定的事情,我们可以安排,但这根本不是你想要的。也许我弄错了

更新:

usersCode.split("\n")[lineNumber - 1].replace(usersCode.split("\n")[lineNumber - 1].substr(29, 39), MyObj.first_name.value);
好的,那么您要替换所有实例吗?查找行号和所有仍然不必要的内容,只需使用以下命令:

usersCode.replace(/first_name/g, MyObj.first_name.value);
usersCode.replace(/last_name/g, MyObj.last_name.value);
g
是用于全局搜索的正则表达式标志

更新2:

usersCode.split("\n")[lineNumber - 1].replace(usersCode.split("\n")[lineNumber - 1].substr(29, 39), MyObj.first_name.value);

您可以分别用变量
startChar
endChar
替换
29
39
<代码>行号
也需要由您提供。

您可以将文本区域的行保存到数组中:

var lines = $('#textarea').val().split(/\n/);
然后从那里获取特定直线的子字符串,并将其指定给对象:

MyObj.first_name.value = lines[0].substring(29,39)

希望有帮助

RegEx可以很容易地根据字符进行搜索,但不能通过位置进行搜索。虽然您仍然可以使用正则表达式来完成,但解决方案将变得越来越复杂。在这种情况下,你不需要;我不需要一个纯正则表达式的答案。下面的代码是您所需要的

k=$('#regex_string').val()

function findAndReplaceWord(lineNo, startPos, endPos, replaceWith) {
    var line = k.split(/\n/)[lineNo];
    if(line) {
        var word = line.substring(startPos, endPos)

        return k.replace(word, replaceWith)
    }
}

findAndReplaceWord(0, 29, 39, MyObj.first_name.value)

可以有任意文本,因此可能会多次出现
first\u name
。还有许多其他的复杂因素使得使用Ln和Ch成为一种要求。例如,我使用CodeMirror而不是textarea。。。这意味着有很多关于不使用更简单方法的细节。感谢更新,但不,我不想替换所有实例。我只想替换特定行和字符号处的实例。如果有任意文本,则表示您不想硬编码行和字符号。不过,客户总是对的,所以给我两秒钟时间。谢谢:)我没有硬编码行号和字符,用户在编辑器中单击变量名,作为事件处理程序,我得到变量名的Ln#和Char#。。。然后换成sxnine-谢谢你给我一次机会,我现在就试试。