str.replace를 배우고 느낀 무한한 가능성 가지고 직접 장난을 쳐보자!
일단 저걸 보자마자 생각난건 기존에 존재하는 meme을 재가공 하는데 쓸 수 있지 않을까 하는것.
이걸 string으로 만들자
let memeStr =
"시마무라가! 시마무라가 모르는 곳에서 웃고 있다든가! 싫고,
다른 아이랑 손을 잡는 것도! 나하고만 했으면 좋겠고! 나랑 같이 있어 줬으면 해서! 축제도, 가고 싶었어! 시마무라가 즐거워하고 있으면, 웃고 있으면,
그 옆에 내가 있고! 그런 것이 좋아! 머리가 아파, 괴로워! 시마무라만 생각하느라, 어떻게 되어 버릴 것 같아서... 시마무라가 전화해 주길 기다렸어!
가끔은 이야기 해 줘, 나한테 말을 걸어 줘, 나만 그러긴 싫어, 시마무라도 조금 정도는... 조금은 내가 신경 안 쓰여? 조금도? 전혀? 아무것 도 아니야?
친구일 뿐? 평범한 친구야? 평범하지 않았으면 좋겠어, 평범한 것보다 하나라도 좋으니, 평범하지 않은 게, 좋아.... 저어, 시마무라, 어떻게 하면 좋을까. 응? 시마무라 듣고 있어? 들어 줘. 내 목소리를 듣고 뭔가 생각하는 중이야?
생각해 주고 있어? 안심해도 좋아, 뭐든 좋아, 뭔가 생각해 줘. 그런게 필요해, 그런 걸 바라면 안 돼? 시마무라! 시마무라 뭐야, 나는, 시마무라가 좋아, 시마무라 이외에는 필요 없고, 필요 없어... 시마무라만으로도 좋으니까.
억지 부리는 거 아니야, 하나면 돼, 하나잖아. 주변 사람들은 어찌 되든 상관없고 필요 없고 저리 가 줬으면 하는데 왜 시마무라는 그쪽으로 가, 이쪽으로 와, 이쪽으로 와서 옆에 있고 떨어지지 말아 줘. 싫어, 시마무라의 옆에 있는 사람은 나, 내가 좋아, 내가 있고 싶어, 있게 해 줘.... 누구야 그 애?
난 몰라. 모르는 시마무라가 되는 건 싫어, 시마무라를 전부 알고 싶고, 알고 싶지 않은 것이 있는 것도 싫고, 하지만 모르는 것은 더 싫고 괴로워, 괴로워, 아파, 아파... 시마무라~ 시마무라랑 놀러 가자고 말하고 싶은데, 축제도 가려고 생각했었어, 가고 싶어, 하지만 시마무라는 그 아이랑 갔어, 놀고 있어?
지금 어디야 시마무라, 누구랑 있어, 시마무라, 시마무라.... 저어, 듣 고 있어? 조금 전부터 나 혼자잖아 이야기하는 거. 평소의 시마무라는 더 많이 말하잖아, 응? 왜? 평소 같지 않아? 나 이상해? 이상하지?
그건 알아 하지만 알고 싶어서, 시마무라를 알고 싶어서 이상해져, 시마무라랑 떨어지고 싶지 않아 항상 같이 있고 싶어 어디든 좋아 같이 있다면 어디든 좋으니까, 시마무라랑 만나지 못했어, 만나고 싶어 하지만 지금 만나면 울 것 같고, 울고 있고, 그 아이와 어떻게 지낼까 누굴까 하는 것만 신경 쓰고 있거든.
듣고 있어? 나랑 같이 있는 것보다 그 아이가 더 좋아? 난 안 돼? 어디가 안 돼? 고칠 테니까 말해 줘, 고칠게, 반드시 고칠테니까 부탁이야 가르쳐줘, 듣고 싶어. 시마무라는 나, 시마무라니까... 시마무라니까, 라는 게 있어 다른 사람이 시마무라랑 똑같아도 관계없을 리 없지만, 저어, 그런 게 아니라 시마무라가 아니면 안 돼, 그러니까 사이좋아지고 싶은데, 뭔가... 이런 것이 아니라 더 다른 이야기를 하고 싶지만, 신경 쓰여서... 그치만 시마무라, 웃고 있었잖아?
나 이외의 사람에게 웃어 주는 거 싫어. 싫지 않아? 그렇지 않아? 시마무라는 그런 거 없어? 시마무라는 누가 좋아? 좋아하는 사람 있어? 좋아하게 될 수 있어?
좋아한다는 게 뭔지 알아? 가끔 있지, 무서워. 시마무라는 왜 옆에 있어 주는 걸까 해서, 시마무라랑 나는 애초에 친구지? 친구 정도는 된 거 맞지? 친구라고 생각해?
시마무라는 그런 거... 우 으으, 아, 시마무라, 목소리를 들려줘, 목소리를 듣고 싶어, 나에 대해 이야기해 줘. 시마무라가 첫 번째로 나를 알고...
알아 줬으면 해, 알고 싶어, 알아 줬으면 좋겠어. 첫 번째가 되어 줬으면 해, 되고 싶어. 되어서, 하지만... 조금 싫은 일이 있으면 꺾여 버릴 것 같아서... 왜냐하면 시마무라는 뭔가, 나를 소중히 대해 주는 느낌이 없어서...
소중, 소중하다니 이상하지만, 하지만 소중하게 대해줬으면 해, 소중한 게 좋아! 다른 사람이랑 똑같이 대하는 건 싫어, 정말로 조금이라도, 좋으니...
시마무라 나를 생각한 적 있어? 여름방학에, 계속 만나지 않았는데, 한 번 정도는 생각해 줬어? 나 있지, 계속 생각했어. 시마무라만 생각했어. 전부 시마무라
. 그러니까 시마무라도! 나를, 꽤, 생각해서... 시마무라랑 나는 다르잖아? 다르지, 알아. 하지만 기대도 하게 되고, 이렇게 배신, 당해도... 시마무라에게
전화하고 싶다고 생각해. 하지만 전화해 봤자 이렇게 돼서, 어찌할 도리가 없고, 어쩌면 좋지? 응? 시마무라, 시마무라? 전화, 연결 돼 있지? 시마무라랑 연결돼 있지? 하지만 멀어, 멀어서, 만나고 싶어. 시마무라랑 직접 만나고 싶어. 웃어 줬으면
좋겠어, 시마무라가 머리를 쓰다듬으면서, 괜찮다고 말해 줬으면 해. 지금 어디야? 어디? 누구랑 있어? 그 아이? 그 아이 누구야? 조금 전부터 몇 번이나 물었지, 대답해 줄 수 없는 상대야? 어떤 사이야? 나보다? 싫어, 그런 건 싫어, 나보다 더라
니, 싫다니까. 싫 어... 아니야, 아니라고 말해 줘! 난 시마무라를 잔뜩 생각하고 있어!! 부족해? 그래선 안 돼? 더? 뭘 하면 돼? 모르겠고, 항상 생각해도 실패하고, 어떤 내가 좋은지 가르쳐 줘, 가르쳐 주면, 나 힘낼게 꼭 힘낼게 그러니까
그런 아이는 사실 어느 쪽이든 상관 없어. 내가 만나고 싶고 시마무라는 더, 달라서, 내가 변하기만 하면 된다는 걸 알고 있지만...시마무라, 저기, 시마무라, 지금 무슨 생각해? 나 이상해? 나 이상해? 시마무라의 이야기를 해줘, 시마무라가 나한
테 말을 걸어 주고, 시마무라가 다가오고. 항상 나만 나만 나만 일방통행이어서는 이렇게 되어 버려! 이렇게 되어 버리니까, 시마무라도 이쪽으로, 와 줘. 시마무라는 내가 싫어? 아니지? 싫어, 날 싫어하지 마. 싫어하는 건 싫어... 좋아, 좋아
해 줬으면 해, 누군가, 좋아하게 돼서, 다른 시마무라를 좋아하게... 싫어? 엄마처럼 내가 싫어? 말을 안 걸게 돼? 모르는 얼굴을 하게 돼? 난 뭐라고 말하면 좋아? 뭘 하면 돼? 날면 돼? 뛰면 돼? 손을 잡으면 돼? 전부 하려고 해도 보지 않으니
까... 어떻게 하면 좋은데? 어떻게 하면, 아무도... 시마무라, 목소리, 듣고 싶어.... 뭐라고 말해 줘, 안심시켜 줘, 하지만 다른 사람을 보고 웃는 건
싫어, 나를 보고 웃어 줘, 웃어 줘... 머리 아파, 배도, 아파... 신경 쓰였는데 왜 연락, 안 해 준 거야? 나한테 가르쳐 줘, 난 알고 싶어. 시마무라를 알고 싶어, 조금 전부터 뭔가, 이제, 마음이 빙글빙글 돌아서... 같은 말을 하고 있지만
, 어쩔 수 없어, 어쩔 수 없잖아, 시마무라 밖에 생각하지 않으니까... 시마무라뿐이니까, 계속, 시마무라가 되어도... 시마무라가, 소중하고, 소중하게
대하고 싶어서, 소중하지 않으면 싫어, 그러니까 나를 봐, 시마무라, 안 보는 건 싫어... 다른 아이,는 싫어... 싫어. 또 갈 거야? 어딘가에 갈 거야? 같이 시내에 갈 거야? 나랑 놀았던 곳에 다른 아이랑? 그런 건 싫어. 덮어쓰지 마! 난 계속
기억하고 있는데, 덮어써서... 또 가면, 이번엔 달라? 같은 걸 보면서 다른 걸 보는 거야? 그런 건 싫어, 싫어, 싫어. 시마무라랑 같이, 같은 것, 나눠서, 알고... 이상해 그런 건, 아니지 나 이상해, 이상한 거 알아, 하지만 이상해져서...시마
무라가, 머리에서 안 떠나서... 지금도... 시마무라, 시마, 무라... 우아앙, 흑, 흑, 흐으윽, 시마무라, 하라... 호, 게, 흐으... 시마무라의, 시마무라?
시마무라, 시마무라, 시마무라... 시마무라가 좋아, 나는, 좋으니까. 그러니까 시마무라도... 저기, 부탁이야, 시마무라... 시마무라도, 시마무라..."
이제 배운걸 써보자
memeStr.replace('시마무라','JavaScript')
결과는 대실패! 맨 처음 나오는 시마무라 만 JavaScript로 바뀌었다. 이게 아닌데..
검색해 보니 replaceAll 이란게 있다. 다시 해보자!
memeStr.replaceAll('시마무라','JavaScript')
이번엔 대성공!
결과는 다음과 같다
'JavaScript가! JavaScript가 모르는 곳에서 웃고 있다든가! 싫고, 다른 아이랑 손을 잡는 것도! 나하고만 했으면 좋겠고! 나랑 같이 있어 줬으면 해서! 축제도, 가고 싶었어! JavaScript가 즐거워하고 있으면, 웃고 있으면, 그 옆에 내가 있고! 그런 것이 좋아! 머리가 아파, 괴로워! JavaScript만 생각하느라, 어떻게 되어 버릴 것 같아서... JavaScript가 전화해 주길 기다렸어! 가끔은 이야기 해 줘, 나한테 말을 걸어 줘, 나만 그러긴 싫어, JavaScript도 조금 정도는... 조금은 내가 신경 안 쓰여? 조금도? 전혀? 아무것 도 아니야? 친구일 뿐? 평범한 친구야? 평범하지 않았으면 좋겠어, 평범한 것보다 하나라도 좋으니, 평범하지 않은 게, 좋아.... 저어, JavaScript, 어떻게 하면 좋을까. 응? JavaScript 듣고 있어? 들어 줘. 내 목소리를 듣고 뭔가 생각하는 중이야? 생각해 주고 있어? 안심해도 좋아, 뭐든 좋아, 뭔가 생각해 줘. 그런게 필요해, 그런 걸 바라면 안 돼? JavaScript! JavaScript 뭐야, 나는, JavaScript가 좋아, JavaScript 이외에는 필요 없고, 필요 없어... JavaScript만으로도 좋으니까. 억지 부리는 거 아니야, 하나면 돼, 하나잖아. 주변 사람들은 어찌 되든 상관없고 필요 없고 저리 가 줬으면 하는데 왜 JavaScript는 그쪽으로 가, 이쪽으로 와, 이쪽으로 와서 옆에 있고 떨어지지 말아 줘. 싫어, JavaScript의 옆에 있는 사람은 나, 내가 좋아, 내가 있고 싶어, 있게 해 줘.... 누구야 그 애? 난 몰라. 모르는 JavaScript가 되는 건 싫어, JavaScript를 전부 알고 싶고, 알고 싶지 않은 것이 있는 것도 싫고, 하지만 모르는 것은 더 싫고 괴로워, 괴로워, 아파, 아파... JavaScript~ JavaScript랑 놀러 가자고 말하고 싶은데, 축제도 가려고 생각했었어, 가고 싶어, 하지만 JavaScript는 그 아이랑 갔어, 놀고 있어? 지금 어디야 JavaScript, 누구랑 있어, JavaScript, JavaScript.... 저어, 듣 고 있어? 조금 전부터 나 혼자잖아 이야기하는 거. 평소의 JavaScript는 더 많이 말하잖아, 응? 왜? 평소 같지 않아? 나 이상해? 이상하지? 그건 알아 하지만 알고 싶어서, JavaScript를 알고 싶어서 이상해져, JavaScript랑 떨어지고 싶지 않아 항상 같이 있고 싶어 어디든 좋아 같이 있다면 어디든 좋으니까, JavaScript랑 만나지 못했어, 만나고 싶어 하지만 지금 만나면 울 것 같고, 울고 있고, 그 아이와 어떻게 지낼까 누굴까 하는 것만 신경 쓰고 있거든. 듣고 있어? 나랑 같이 있는 것보다 그 아이가 더 좋아? 난 안 돼? 어디가 안 돼? 고칠 테니까 말해 줘, 고칠게, 반드시 고칠테니까 부탁이야 가르쳐줘, 듣고 싶어. JavaScript는 나, JavaScript니까... JavaScript니까, 라는 게 있어 다른 사람이 JavaScript랑 똑같아도 관계없을 리 없지만, 저어, 그런 게 아니라 JavaScript가 아니면 안 돼, 그러니까 사이좋아지고 싶은데, 뭔가... 이런 것이 아니라 더 다른 이야기를 하고 싶지만, 신경 쓰여서... 그치만 JavaScript, 웃고 있었잖아? 나 이외의 사람에게 웃어 주는 거 싫어. 싫지 않아? 그렇지 않아? JavaScript는 그런 거 없어? JavaScript는 누가 좋아? 좋아하는 사람 있어? 좋아하게 될 수 있어? 좋아한다는 게 뭔지 알아? 가끔 있지, 무서워. JavaScript는 왜 옆에 있어 주는 걸까 해서, JavaScript랑 나는 애초에 친구지? 친구 정도는 된 거 맞지? 친구라고 생각해? JavaScript는 그런 거... 우 으으, 아, JavaScript, 목소리를 들려줘, 목소리를 듣고 싶어, 나에 대해 이야기해 줘. JavaScript가 첫 번째로 나를 알고... 알아 줬으면 해, 알고 싶어, 알아 줬으면 좋겠어. 첫 번째가 되어 줬으면 해, 되고 싶어. 되어서, 하지만... 조금 싫은 일이 있으면 꺾여 버릴 것 같아서... 왜냐하면 JavaScript는 뭔가, 나를 소중히 대해 주는 느낌이 없어서... 소중, 소중하다니 이상하지만, 하지만 소중하게 대해줬으면 해, 소중한 게 좋아! 다른 사람이랑 똑같이 대하는 건 싫어, 정말로 조금이라도, 좋으니... JavaScript 나를 생각한 적 있어? 여름방학에, 계속 만나지 않았는데, 한 번 정도는 생각해 줬어? 나 있지, 계속 생각했어. JavaScript만 생각했어. 전부 JavaScript. 그러니까 JavaScript도! 나를, 꽤, 생각해서... JavaScript랑 나는 다르잖아? 다르지, 알아. 하지만 기대도 하게 되고, 이렇게 배신, 당해도... JavaScript에게 전화하고 싶다고 생각해. 하지만 전화해 봤자 이렇게 돼서, 어찌할 도리가 없고, 어쩌면 좋지? 응? JavaScript, JavaScript? 전화, 연결 돼 있지? JavaScript랑 연결돼 있지? 하지만 멀어, 멀어서, 만나고 싶어. JavaScript랑 직접 만나고 싶어. 웃어 줬으면 좋겠어, JavaScript가 머리를 쓰다듬으면서, 괜찮다고 말해 줬으면 해. 지금 어디야? 어디? 누구랑 있어? 그 아이? 그 아이 누구야? 조금 전부터 몇 번이나 물었지, 대답해 줄 수 없는 상대야? 어떤 사이야? 나보다? 싫어, 그런 건 싫어, 나보다 더라니, 싫다니까. 싫 어... 아니야, 아니라고 말해 줘! 난 JavaScript를 잔뜩 생각하고 있어!! 부족해? 그래선 안 돼? 더? 뭘 하면 돼? 모르겠고, 항상 생각해도 실패하고, 어떤 내가 좋은지 가르쳐 줘, 가르쳐 주면, 나 힘낼게 꼭 힘낼게 그러니까 그런 아이는 사실 어느 쪽이든 상관 없어. 내가 만나고 싶고 JavaScript는 더, 달라서, 내가 변하기만 하면 된다는 걸 알고 있지만...JavaScript, 저기, JavaScript, 지금 무슨 생각해? 나 이상해? 나 이상해? JavaScript의 이야기를 해줘, JavaScript가 나한테 말을 걸어 주고, JavaScript가 다가오고. 항상 나만 나만 나만 일방통행이어서는 이렇게 되어 버려! 이렇게 되어 버리니까, JavaScript도 이쪽으로, 와 줘. JavaScript는 내가 싫어? 아니지? 싫어, 날 싫어하지 마. 싫어하는 건 싫어... 좋아, 좋아해 줬으면 해, 누군가, 좋아하게 돼서, 다른 JavaScript를 좋아하게... 싫어? 엄마처럼 내가 싫어? 말을 안 걸게 돼? 모르는 얼굴을 하게 돼? 난 뭐라고 말하면 좋아? 뭘 하면 돼? 날면 돼? 뛰면 돼? 손을 잡으면 돼? 전부 하려고 해도 보지 않으니까... 어떻게 하면 좋은데? 어떻게 하면, 아무도... JavaScript, 목소리, 듣고 싶어.... 뭐라고 말해 줘, 안심시켜 줘, 하지만 다른 사람을 보고 웃는 건 싫어, 나를 보고 웃어 줘, 웃어 줘... 머리 아파, 배도, 아파... 신경 쓰였는데 왜 연락, 안 해 준 거야? 나한테 가르쳐 줘, 난 알고 싶어. JavaScript를 알고 싶어, 조금 전부터 뭔가, 이제, 마음이 빙글빙글 돌아서... 같은 말을 하고 있지만, 어쩔 수 없어, 어쩔 수 없잖아, JavaScript 밖에 생각하지 않으니까... JavaScript뿐이니까, 계속, JavaScript가 되어도... JavaScript가, 소중하고, 소중하게 대하고 싶어서, 소중하지 않으면 싫어, 그러니까 나를 봐, JavaScript, 안 보는 건 싫어... 다른 아이,는 싫어... 싫어. 또 갈 거야? 어딘가에 갈 거야? 같이 시내에 갈 거야? 나랑 놀았던 곳에 다른 아이랑? 그런 건 싫어. 덮어쓰지 마! 난 계속 기억하고 있는데, 덮어써서... 또 가면, 이번엔 달라? 같은 걸 보면서 다른 걸 보는 거야? 그런 건 싫어, 싫어, 싫어. JavaScript랑 같이, 같은 것, 나눠서, 알고... 이상해 그런 건, 아니지 나 이상해, 이상한 거 알아, 하지만 이상해져서...JavaScript가, 머리에서 안 떠나서... 지금도... JavaScript, 시마, 무라... 우아앙, 흑, 흑, 흐으윽, JavaScript, 하라... 호, 게, 흐으... JavaScript의, JavaScript? JavaScript, JavaScript, JavaScript... JavaScript가 좋아, 나는, 좋으니까. 그러니까 JavaScript도... 저기, 부탁이야, JavaScript... JavaScript도, JavaScript...'
replace 만 알고 시작했는데 replaceAll 을 알게 된게 가장 큰 수확이다.
아무리 긴 meme이라도 그것이 string이기만 하다면 원하는 대로 재가공 할 수 있다.
정말 '시마무라' 만 변형되었다. 쉼표등에 의해 끊어진 시마, 무라 같은건 가공에 실패.
이것까지 가공하려면 replaceAll을 또 쓰면 되겠지만 "시,마 무라","시,,마,무라" 등
변형의 경우의 수가 너무 많다. 즉 현재 내 얄팍한 지식으로는 불가능하다.
추후 새로운 도구를 알게되면 그때 재도전 해볼것!
위 가공은 그냥 chrome 의 개발자 도구에서 콘솔창 열고 했는데 이를 통해 콘솔창이
수용할수 있는 문자의 길이는 엄청나게 길다는 것을 알게 되었다.
str.length 의 경우, 아주아주 긴 string도 무리없이 처리할수 있다는 사실을 알게 되었다.
memeStr.length // 3755
즉 일단 최소 3755자의 문자까지는 아무런 오류도 일으키지 않는다는걸 확인한 셈.
let 이 아닌 const 로 만들면 어찌될까 궁금해서 추가로 실험해보았다.
const는 상수니까 혹시나 replaceAll 을 쓸수 없는건 아닐까?
결과는 "const에도 쓸수 있다" 이다. let으로 선언했을때와 아무 차이가 없었다.
이를 통해 내가 const 의 의미를 아직도 정확하게 파악하고 있지 못하다는 사실을 확인하였다.
[Follow up 10/13]
튜터님의 도움으로 replace 메서드 의 오해를 풀었음.
메서드는 함수일뿐 const에 선언된 값을 바꾸진 못한다.
즉, memeStr.replaceAll('시마무라','JavaScript')
로 내가 바뀐 텍스트를 얻었다고 해도 그것이 memeStr
이 바뀌었다는 것을 의미하진 않는다. memeStr 이 바뀌는 것이 아니기 때문에 시마무라가 JavaScript로 바뀐 버전을 써먹고 싶으면 함수 안에서 return 받거나 아니면 따로 변수를 또 하나 선언하면 됨.
const newMemeStr = memeStr.replaceAll('시마무라','JavaScript')
이런식으로!!
이러면 이제부터 newMemeStr 을 호출해서 바뀐 스트링을 써먹을수 있는것.