使用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
【问题讨论】:
显示你尝试过的内容 你尝试过使用字符串方法吗?喜欢replace
、substring
?
似乎是一个基本的正则表达式
您的问题不完整。 so output will be
???此外,您未能指定这 11 个字符是什么或之后的 =
。你也没有分享任何努力。您可以查看string.replace
、string.split
和string.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=[^&]*(?=&|$)/
@Rajesh 你的正则表达式捕获整个字符串regex101.com/r/PsAdJM/1
@Rajesh - 取决于您如何定义“更好”。就我个人而言,我通常更喜欢避免使用正则表达式,即使为了便于阅读,它也会对性能造成轻微影响。维护字符串替换更容易。
@user2366842 在这种情况下,您将遍历字符串并找到v=
的索引。然后,您将在 temp 中取前半部分,然后在剩余的字符串中再次循环以获取 &
的索引。最后,您将对剩余的字符串执行另一个子字符串来替换值。另外,如果要多次重复此行为,您将使其成为一个函数并手动调用它。遗憾会照顾这一切。是的,不是每个人都擅长正则表达式,但有时最好在这些地方添加评论以保持可读性。 :-)以上是关于使用javascript替换textarea中所有行中的子字符串的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 如何使用javascript替换选定的textarea值
如何在webview(android)中使用javascript(或不是javascript)模拟键盘事件以输入textarea