# Ceaser's Cipher / Rot13 Challenge

I have the logic down and all the characters are translating nicely I am just struggling to figure out how to keep the punctuation of the original string in my new one. I’m sure this has something to do with the way I set up this problem to push into an array.

Any help would be greatly appreciated!

``````
function rot13(str) {

const abc = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz".toUpperCase();

let arr = [];

for(let i = 0; i < str.length; i++){
let char = str[i];

if(abc.includes(char,0)){
let index = abc.indexOf(char,0) + 13;

arr.push(abc[index]);
}
}
let replace = arr.join('');
console.log(replace);

}
rot13("SERR CVMMN!");
``````

Challenge: Caesars Cipher

Continuing the discussion from Ceaser's Cipher / Rot13 Challenge:

I GOT IT!!!

``````function rot13(str) {
const abc = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz".toUpperCase()

let res = '';

for(let i = 0; i < str.length; i++){
let char = str[i];

if(abc.includes(char,0)){
let index = abc.indexOf(char,0) + 13;
res += abc[index]
}else{
res += str[i]
}
}
return res;

}
rot13("SERR CVMMN!");
rot13("SERR PBQR PNZC");
rot13("SERR YBIR?");
rot13("GUR DHVPX OEBJA SBK WHZCF BIRE GUR YNML QBT.");
``````

I edited your post to include spoiler tags since this is a working solution.