Замена строки, имеющей hypen, с использованием JavaScript - PullRequest
1 голос
/ 11 июля 2019

Я хотел бы знать, как разбивать и заменять текст, содержащий гипс в javascript.

если URL-адрес английский, переводите значение и наоборот.

var object ={
"transfer-money-from-": "hui-kuan-cong-",
"aruba": "a-lu-ba",
"australia": "ao-da-li-ya",
"azerbaijan": "a-sai-bai-jiang",
"to": "zhi"
}
MyScenario Start 
ExpectedOutput: 
if url is  www.xyz.com/en/transfer-money-from-azerbaijan-to-australia?scy=AUD&amt=1000
=> output :www.xyz.com/en/transfer-money-from-azerbaijan-to-australia?scy=AUD&amt=1000

if url is  www.xyz.com/zh/transfer-money-from-azerbaijan-to-australia?scy=AUD&amt=1000
=> output: www.xyz.com/zh/hui-kuan-cong-a-sai-bai-jiang-zhi-ao-da-li-ya?scy=AUD&amt=1000

if url is  www.xyz.com/en/hui-kuan-cong-a-sai-bai-jiang-zhi-ao-da-li-ya?scy=AUD&amt=1000G
=> output: www.xyz.com/en/transfer-money-from-azerbaijan-to-australia?scy=AUD&amt=1000


var lang = "zh";
 var getPath = changeUrl(object, "transfer-money-from-azerbaijan-to-australia?scy=AUD&amt=1000"); 
const result = "www.xyz.com/" + lang + "/"+ getPath ; 

function changeUrl(object, url){
    const re = new RegExp(Object.keys(object).join('|'), 'g');
    const output = url.replace(re, match => object[match]);
    return output; 
}
MyScenario End

1 Ответ

4 голосов
/ 11 июля 2019

Я бы сконструировал регулярное выражение, чередуя все ключи объекта, а затем использовал бы функцию заменителя для поиска значения замены:

const object = {
  "transfer-money-from-": "hui-kuan-cong-",
  "aruba": "a-lu-ba",
  "australia": "ao-da-li-ya",
  "azerbaijan": "a-sai-bai-jiang",
  "to": "zhi"
};
const re = new RegExp(Object.keys(object).join('|'), 'g');
const url = "/en/transfer-money-from-azerbaijan-to-australia";
const output = url.replace(re, match => object[match]);
console.log(output);

Чтобы сделать это наоборот, просто переключите ключи и значения объекта:

const object = {
  "transfer-money-from-": "hui-kuan-cong-",
  "aruba": "a-lu-ba",
  "australia": "ao-da-li-ya",
  "azerbaijan": "a-sai-bai-jiang",
  "to": "zhi"
};
const switchedObj = Object.fromEntries(
  Object.entries(object).map(
    ([key, val]) => [val, key]
  )
);
const re = new RegExp(Object.keys(switchedObj).join('|'), 'g');
const url = "/en/hui-kuan-cong-a-sai-bai-jiang-zhi-ao-da-li-ya";
const output = url.replace(re, match => switchedObj[match]);
console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...