在字符串中遇到重复项时如何插入符号

时间:2019-04-29 11:43:49

标签: javascript

让我们假设我有以下字符串:aabbc,并且在每个不等于前一个字符的字符之间我都想插入符号。

这将导致以下字符串:aa$bb$c

如何实现?

5 个答案:

答案 0 :(得分:1)

您可以按照以下步骤进行操作:

  • 您可以使用Spread运算符将字符串转换为数组
  • 然后在其上使用map()
  • map()内检查当前元素旁边的元素是否与当前字母不同,然后在其末尾添加$
  • 使用join()使数组成为字符串。
  • 使用$删除最后一个slice(),这是多余的。

let str = 'aabbc';
let res = [...str].map((x,i,arr) => arr[i+1] !== arr[i] ? x + '$' : x).join('').slice(0,-1)
console.log(res)

您还可以使用RegExp和match()

let str = 'aabbc';
let res = str.match(/(.)(\1*)/g).join('$')
console.log(res)

答案 1 :(得分:1)

可以用一个replace完成:

input.replace(/(.)(?!\1)(?=.)/g, "$1$$")

模式说明:

  • .-匹配任何单个字符(换行符除外);我们称这个字符为X。
  • (.)-捕获子模式;捕获X,以便可以在替换字符串中引用它(如下所述)。
  • \1-向后引用;匹配另一个与X相同的字符。
  • (?!\1)-前瞻性否定;仅当到目前为止匹配的X是 not 后跟另一个X时才匹配。
  • (?=.)-积极向前看;仅当X到目前为止匹配时匹配,后跟任何其他字符;换句话说,断言该行并没有在这里结束。如果您不介意附加尾随$,则可以省略。

替换字符串的说明:

  • $1-第一个捕获子模式捕获的X(请参见上文)。
  • $$-一个$

示例:

var input = "aabbc";
var out = input.replace(/(.)(?!\1)(?=.)/g, "$1$$");
console.log(out);

答案 2 :(得分:0)

也许可以尝试:

var charArray = myString.split(''); //this should split the string in an array of the characters. ["a", "a", "b", "b", "c"]
var newString = "";
for (int i = 0; i < charArray.length -1; i++) { //I do length -1 so to not cause an IndexOutOfBoundException at charArrayi+1]
    if (charArray[i] === charArray[i+1]) {
        newString += charArray[i] + charArray[i+1] + "$";
    }
}

也许是这样? 我没有实际测试过,我只是在这里输入。 但是在我的脑海中,这感觉是正确的。 :)

答案 3 :(得分:0)

const a = 'aabbc';

let last = '';
let str = '';
for (let i = 0; i < a.length; i += 1) {
	str += a[i];
	if (last === a[i]) {
		str += '$';
	}

	last = a[i];
}

console.log(str);

答案 4 :(得分:0)

您可以通过使用如下所述的简单for循环来做到这一点:

var string = "aabbc";
var checkChar = "";
for (let i = 0; i < string.length; i++) {
  checkChar += string.charAt(i);
  if (string.charAt(i - 1) === string.charAt(i)){
      checkChar += "$";
  }  
}
console.log(checkChar)