在特定位置插入一个字符串

时间:2016-08-07 16:22:11

标签: javascript regex

我有一个数组,如果当前数组值(字符串)包含“ata”,我想插入“ZZ”,代码应该在结尾处替换“ata”字。

var duplicatesArray = ["abıca","abrık","apşak","abbak","abu","aparma","apalisına","appak","aparmadutı","apşak","apışık","apşak","apışıklık","apışık","apalak","apılamak","apul","apul","apulamak","aparmak","at","arkasına","gelmek","ata","atabeg","at","eri","at","ağaç","at","oğlanı","at","akdarıcı","at","otayıcı","at","uşağı","at","oğlanı","at","oynağı","at","bırakmak","at","boynuna","düşmek","at","boynuna","düşmek","at","cıvlandurmak","at","çapmak","at","çapmak","at","depretmek","at","depmek","atı","doldurmak","at","segirtmek","ateş","evi","ateş","göyniigi","atışmak","ateşe","urmak","ateşe","nal","komak","at","şalmak","at","şalmak","at","tonı","at","kaşnısı","at","kaldırmak","at","kulağı","at","koparmals","at","koşmak","at","kulağı","götliği","atlaz","atlandurmak","atlandurmak","atlanmak","atlu","azuğı","atımı","yir","ata","atalar","atıcıduğı","aç","itmek","acıtğan","acıtmak","aç","dirilmek","acır","acırak","acışıklık","acışmak","aç","tutmak"
];

var uniqueArray = duplicatesArray.filter(function(elem, pos) {
  return duplicatesArray.indexOf(elem) == pos;
});
	


for (var i = 0; i < uniqueArray.length; i++) {
  var st = uniqueArray[i];
  if((st.endsWith("mak")==false) && (st.endsWith("mek")== false) && (st.length>3))
  {
  	
    var b = "ata";
    var insert = "ZZ";
    
    var position = st.indexOf("b");
  	st = st.slice(0, position) + insert + st.slice(position);
  
  
    document.writeln(st);
    document.write("<br>");
    
    
  }
  

  }

2 个答案:

答案 0 :(得分:0)

我是对还是错? :)

var initialArray = ["abıca","abrık","apşak","abbak","abu","aparma","apalisına","appak","aparmadutı","apşak","apışık","apşak","apışıklık","apışık","apalak","apılamak","apul","apul","apulamak","aparmak","at","arkasına","gelmek","ata","atabeg","at","eri","at","ağaç","at","oğlanı","at","akdarıcı","at","otayıcı","at","uşağı","at","oğlanı","at","oynağı","at","bırakmak","at","boynuna","düşmek","at","boynuna","düşmek","at","cıvlandurmak","at","çapmak","at","çapmak","at","depretmek","at","depmek","atı","doldurmak","at","segirtmek","ateş","evi","ateş","göyniigi","atışmak","ateşe","urmak","ateşe","nal","komak","at","şalmak","at","şalmak","at","tonı","at","kaşnısı","at","kaldırmak","at","kulağı","at","koparmals","at","koşmak","at","kulağı","götliği","atlaz","atlandurmak","atlandurmak","atlanmak","atlu","azuğı","atımı","yir","ata","atalar","atıcıduğı","aç","itmek","acıtğan","acıtmak","aç","dirilmek","acır","acırak","acışıklık","acışmak","aç","tutmak"];
var newArray = []
var regexp = /(ata)(.*)?/;
for (var i = 0; i< initialArray.length; i += 1) {
  newArray.push(initialArray[i].replace(regexp, "$1ZZ$2"))
}
console.log(newArray)
// ... "gelmek", "ataZZ", "ataZZbeg" ...

答案 1 :(得分:0)

我可能需要在澄清一些细节后稍后编辑此答案,但您似乎应该在.map()上使用uniqueArray方法。

此代码将遍历列表中的每个单词,并保持不变或在满足所有条件时应用替换。

// using a shorter, already deduplicated list for sake of clarity
var uniqueArray = [
  "abıca","gelmek","ata","atabeg","at","eri","yir","atalar","tutmak"
];

var result = uniqueArray.map(function(word) {
  return (
    !word.endsWith("mak") &&
    !word.endsWith("mek") &&
    word.length > 3 ?
    word.replace(/ata/, "ataZZ") : word
  );
});

console.log(result);