让我们假设我有以下字符串:aabbc
,并且在每个不等于前一个字符的字符之间我都想插入符号。
这将导致以下字符串:aa$bb$c
如何实现?
答案 0 :(得分:1)
您可以按照以下步骤进行操作:
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)