1. 程式人生 > 實用技巧 >python和js分別在多行字串中插入一行字串

python和js分別在多行字串中插入一行字串

問題

一個多行字串,"asfdb;\nwesfpjoing;\nwbfliqwbefpwqufn\nasfdwe\nsafewt\nqwern\nvar\ntgwtg\n\nftwg\n"
現在要在"qwern"這一行後插入一行“xxxyyy”,如何做?

思路

將該字串以\n切分變為字串陣列。遍歷該陣列,如果某一行字串中包含關鍵字,則在後面插入xxxyyy

python

str = "asfdb;\nwesfpjoing;\nwbfliqwbefpwqufn\nasfdwe\nsafewt\nqwern\nvar\ntgwtg\n\nftwg\n"

lines = str.split('\n')
lines.reverse()
newstr = ''
for line in lines:
    #print(line)
    if "safewt" in line:
        line = line + '\n' + "xxxxyyyy"
    newstr = line +'\n' + newstr #倒序的
print(newstr)

lines = str.split('\n')

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;\nwesfpjoing;\nwbfliqwbefpwqufn\nasfdwe\nsafewt\nqwern\nvar\ntgwtg\n\nftwg\n';

/*
for(line in str){
    console.log(line)
}
*/
strlist = str.split('\n');
newstr='';
for(i =0;i < strlist.length;++i)
{
    //console.log(strlist[i]);
    if(strlist[i].indexOf("wern") != -1){
        strlist[i] += "\nxxxxxyyyyy";
    }
    newstr = newstr + strlist[i] + '\n';
}

console.log(newstr);