簡體   English   中英

將兩個弦組合在一起

[英]Combine Two strings together

我試圖將兩個字符串組合在一起,但內部有任何重復項被替換。 我認為string1會取代string2。

所以,如果我有:

str1 = 'user { id name } roles { id name }';
str2 = 'user { roles match } permissions { id role_id }';

我想最終得到:

'user { roles match } roles { id name } permissions { id role_id }'

我試過做:

str1.replace(/[a-z]* {.*}/g, str2)

但這最終會用第二個字符串替換第一個字符串。

這可能嗎?

這可能對你所需要的東西有點過分,但如果你需要擴展它或處理更多的可能性,它應該非常靈活和強大。

 str1 = 'user { id name } roles { id name }'; str2 = 'user { roles match } permissions { id role_id }'; //Return an object containing the key and object parts of a string //getParts(str1) -> {user: '{ id name }', roles: '{ id name }'} function getParts(s) { var out = {}; var re = /([az]+) ({.*?})/gi; match = re.exec(s); while (match) { out[match[1]] = match[2]; match = re.exec(s); } return out; } //Takes in the parts object created by getParts and returns a space //separated string. Exclude is an array of strings to exclude from the result. //makeString(getParts(str1), ['user']) -> 'roles {id name}' function makeString(parts, exclude) { if (typeof exclude === 'undefined') { exclude = []; } var out = []; for (var key in parts) { if (!parts.hasOwnProperty(key)) { continue; } if (exclude.indexOf(key) !== -1) { continue; } out.push(key + ' ' + parts[key]); } return out.join(' '); } //Combines two strings in the desired format, with s2 keys taking precedence //in case of any duplicates function combine(s1, s2) { var p1 = getParts(s1); var p2 = getParts(s2); return makeString(p1, Object.keys(p2)) + ' ' + makeString(p2); } console.log(combine(str1, str2)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM