如何动态替换javascript中的字符串
How to dynamically replace string in javascript
我有这个字符串:
var text1 = "Ferrari Mercedes Ferrari Android iPhone LG iPhone iOS";
//text1 could be anything
我有这些数组:
var cars = ['Toyota', 'BMW', 'Ferrari', 'Mercedes'];
var phones = ['Nokia', 'Samsung', 'LG', 'iPhone'];
// cars values are fixed, but number of array could be increased
我想将text1
中的每个单词替换为数组中具有相同值的单词/值之一,例如:
text1
中的Ferrari将匹配Cars
值之一,因此它将被随机替换为BMW, Toyota或Mercedes,而不是Ferrari或phones
值之一。(假设它被随机替换为BMW)第二个Ferrari也将被BMW
但是
text1
中的Mercedes不能被BMW和Mercedes 代替以及
text1
中与phones
中分类的词相同的术语我预计结果可能是这样的:
text1 = "BMW Toyota BMW Android Nokia Samsung Nokia iOS";
- Android和iOS不会被替换,因为它们不在任何数组列表中。
得到这个的有效方法是什么?
这是一种方法。
- 在1和数组(汽车/电话)长度之间随机生成两个"偏移"数
- 创建一个空的'mapper'散列来存储新旧名称的映射
- 循环遍历汽车数组中的所有索引值,向您的"namemapper"添加一个值,其中key = cars[index]和value = cars[index + offset % cars。,这将确保每个旧名称映射到一个不同的新名称 。
- 对手机做同样的事情
- 分割' '上的字符串以获得一个单词数组(我称之为splitText)
- 定义一个空的回答字符串和both = phones + cars
- 使用for循环访问splitText 的每个值
- 在for循环中,检查每个单词是否在'both'数组中,您可以通过使用第二个for循环访问数组中的每个字符串并使用=== 检查是否相等来做到这一点
- 如果是,将映射器中与此键对应的值附加到回答字符串
- 否则,将splitString值附加到您的答案字符串
- 添加空格
代码如下:
var carOffset = Math.ceil(Math.random() * (cars.length-1));
var phoneOffset = Math.ceil(Math.random() * (phones.length -1));
var mapper = {};
for(var i = 0; i < cars.length; i++){
j = (i + carOffset) % cars.length;
mapper[cars[i]]=cars[j];
}
for(var i = 0; i < phones.length; i++){
j = (i + phoneOffset) % phones.length;
mapper[phones[i]]=phones[j];
}
var splitText = text1.split(' ');
var ansString = '';
var both = cars + phones;
for(var i = 0; i < splitText.length; i++){
var flag = 0;
for(var j = 0; j< both.length; j++){
if(splitText[i]===both[j]){
ansString += mapper[splitText[i]];
flag += 1;
}
}
if(flag === 0){
ansString += splitText[i];
}
ansString += ' ';
}
我会使用这个工作流:
- 定义每个对象类型的RegEx:'(丰田宝马法拉利| | |奔驰)' gi
- 获取给定text1的匹配项
- 定义一个javascript关联数组来包含Mathc/Replacement对
- 遍历匹配,检查关联数组…if (associativeArray["toyota"] != null){}如果是NEW,则从cars数组中随机选择一个替换项,并从cars数组中删除该项。如果已经存在,则跳过并继续进行下一个MATCH。
- 在你检查了每个匹配之后,迭代你的关联数组,为每个项目执行替换。
相关文章:
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查