使用javascript替换textarea中所有行中的子字符串

Posted

技术标签:

【中文标题】使用javascript替换textarea中所有行中的子字符串【英文标题】:Replace substring in all lines in textarea using javascript 【发布时间】:2017-10-22 03:06:05 【问题描述】:

我正在尝试使用 javascript 替换所有行中的特定字符串。这是示例

 www.youtube.com/watch?v=s8IJkexsjlI&index=37&list=PLB03EA9545DD188C3
 www.youtube.com/watch?v=PYOQLPW6ewQ&index=38&list=PLB03EA9545DD188C3
 www.youtube.com/watch?v=ejRmaOHs1rk&index=39&list=PLB03EA9545DD188C3

我想替换 '=' 后的 11 个字符,如何使用变量来完成 比如 var= 'hello123456'

所以输出将是

www.youtube.com/watch?v=hello123456&index=37&list=PLB03EA9545DD188C3
www.youtube.com/watch?v=hello123456&index=38&list=PLB03EA9545DD188C3
www.youtube.com/watch?v=hello123456&index=39&list=PLB03EA9545DD188C3

【问题讨论】:

显示你尝试过的内容 你尝试过使用字符串方法吗?喜欢replacesubstring 似乎是一个基本的正则表达式 您的问题不完整。 so output will be???此外,您未能指定这 11 个字符是什么或之后的 =。你也没有分享任何努力。您可以查看string.replacestring.splitstring.substring,但请试一试 您被连续投票否决,因为您没有尝试自己回答问题,如果您尝试过,请向我们展示非工作代码,所以我们有一个起点你是如何解决这个问题的。 【参考方案1】:

这里是正则解决方案,见下面的sn-p

document.addEventListener("DOMContentLoaded", function()

	var link = "www.youtube.com/watch?v=s8IJkexsjlI&index=37&list=PLB03EA9545DD188C3";
	var value = "hello123456";
	link = link.replace(/\?v=(.*)\&index/g, "?v="+value+"&index")
	document.getElementById("id").innerhtml = link

);
Input link:
<div>www.youtube.com/watch?v=s8IJkexsjlI&index=37&list=PLB03EA9545DD188C3</div>
<br>
<br>
Output link:
<div id="id"></div>

【讨论】:

【参考方案2】:

请检查以下代码

var youstr="www.youtube.com/watch?v=s8IJkexsjlI&index=37&list=PLB03EA9545DD188C3";
var start=youstr.indexOf("=");
var end=start+11;
var replaceStr=youstr.slice(start,start+11);
youstr=youstr.replace(replaceStr,"ReplaceString");

【讨论】:

【参考方案3】:

这是一个非常简单的解决方案,没有任何花哨的东西,因此您可以轻松理解正在发生的事情。

var originalStr = 'www.youtube.com/watch?v=s8IJkexsjlI&index=37&list=PLB03EA9545DD188C3';
var textToReplaceWith = 'hello123456';
var newStr = '';

// get index where unwanted text starts
var index = originalStr.indexOf('v=') + 2;

newStr = originalStr.substring(0, index); //take part just before the unnecessary text
newStr += textToReplaceWith; //add string you want
newStr +=  originalStr.substring(index + 11, originalStr.length) // take text part after unwanted text

【讨论】:

在这种情况下,Regex 总是更好。 /v=[^&amp;]*(?=&amp;|$)/ @Rajesh 你的正则表达式捕获整个字符串regex101.com/r/PsAdJM/1 @Rajesh - 取决于您如何定义“更好”。就我个人而言,我通常更喜欢避免使用正则表达式,即使为了便于阅读,它也会对性能造成轻微影响。维护字符串替换更容易。 @user2366842 在这种情况下,您将遍历字符串并找到v= 的索引。然后,您将在 temp 中取前半部分,然后在剩余的字符串中再次循环以获取 &amp; 的索引。最后,您将对剩余的字符串执行另一个子字符串来替换值。另外,如果要多次重复此行为,您将使其成为一个函数并手动调用它。遗憾会照顾这一切。是的,不是每个人都擅长正则表达式,但有时最好在这些地方添加评论以保持可读性。 :-)

以上是关于使用javascript替换textarea中所有行中的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 如何使用javascript替换选定的textarea值

文本选择和替换在 textarea 中无法正常工作

查找并替换 textarea 中的所有匹配字符串

js怎么替换textarea中选定的内容?

如何用 Javascript 替换和追加

如何在webview(android)中使用javascript(或不是javascript)模拟键盘事件以输入textarea