问题
一个多行字符串,"asfdb;
wesfpjoing;
wbfliqwbefpwqufn
asfdwe
safewt
qwern
var
tgwtg
ftwg
"
现在要在"qwern"这一行后插入一行“xxxyyy”,如何做?
思路
将该字符串以 切分变为字符串数组。遍历该数组,如果某一行字符串中包含关键字,则在后面插入xxxyyy
python
str = "asfdb;
wesfpjoing;
wbfliqwbefpwqufn
asfdwe
safewt
qwern
var
tgwtg
ftwg
"
lines = str.split('
')
lines.reverse()
newstr = ''
for line in lines:
#print(line)
if "safewt" in line:
line = line + '
' + "xxxxyyyy"
newstr = line +'
' + newstr #倒序的
print(newstr)
lines = str.split('
')
python使用split后字符串列表的顺序是反的,需要再一次倒序该列表。
有以下几种方法:
1、reversed(a), 生成了a的迭代器, for line in reversed(a)即可
也可以将该迭代器转换为list类型:
b = reversed(a)
list(b)
2.a[::-1],该方法将a倒序切片, 得到一个新的list, for b in s[::-1]
3.a.reverse() 将a本身倒过来
4、使用range,range(4,-1,-1)表示[4,-1)
左开右闭区间,由于-1是开区间,所以实际上是[4,0]
,
最后面的-1是每次的步进距离。 从位置4到1的区间,每次移动-1距离。左边是开始位置,而右边是结束位置。
for i in range(len(a)-1,-1,-1):
a[i]
javascript
js中同样使用split()切分,但是产生的数组不会倒序。
判断是否有子串存在的方法是indexOf(), 如果匹配失败,返回-1,匹配成功,返回第一次匹配到的初始位置。lastindexOf()则是最后一次匹配到的位置。
var qs = require('querystring');
var str = 'asfdb;
wesfpjoing;
wbfliqwbefpwqufn
asfdwe
safewt
qwern
var
tgwtg
ftwg
';
/*
for(line in str){
console.log(line)
}
*/
strlist = str.split('
');
newstr='';
for(i =0;i < strlist.length;++i)
{
//console.log(strlist[i]);
if(strlist[i].indexOf("wern") != -1){
strlist[i] += "
xxxxxyyyyy";
}
newstr = newstr + strlist[i] + '
';
}
console.log(newstr);