190822 베네치아 게임 피드백

zenibako.lee
4 min readAug 26, 2019

--

새로 알게된 사항들을 정리해 봅니다.

window.addEventListener(‘load’, function(){fetch(‘wordnote.txt’).then(response => response.text()).then(text=>text = text.replace(/[0–9]/g, ‘’)).then(text => wordList = text.split(‘\n’)).then(function(){uniqueArray = wordList.map(function(value,index){return value.trim();})}).then(function(){finalArray = uniqueArray.filter(function(value, index) {return uniqueArray.indexOf(value) === index;})})});

이러한 코드를 통해 라인단위로 텍스트파일을 나눠 배열로 구성했다.

fetch(‘uri’)를 통해 해당 파일을 읽었고,

불러온 response에 대해 .text() 메소드를 통해

string타입 변수를 resolve하는 promise객체를 return했다.

https://developer.mozilla.org/en-US/docs/Web/API/Body/text

해당 프로미스를 정규표현식을 통해 숫자를 제거했고, 라인변화를 기준으로 split하여 배열을 생성하였다.

그러나 기대와 달리 눈에는 보이지 않던 공백이 존재했다.

다른 코드라인에서 생성된 배열을 통해 .blocks <div>의 id를 지정, 생성하였으나, $(‘#id’)로 호출이 되지 않아, 테스트를 해보니 배열에 저장된 글자는 눈에 보이지 않는 뭔가의 차이로 의도한 바대로 공백없는 단어로 id가 지정되지 않았다.

찾아보니 그 이유는 fetch하는 대상인 txt파일의 특성에 있었다.

윈도우에서 줄바꿈을 처리하는 방식은
CRLF 로 처리가 된다.

CR+LF 를 의미하는데 각각

CR : Carriage Return (\r)

LF : Line Feed (\n)

를 의미한다.

예전 타자기를 생각하면 한 라인을 다 치고
헤드를 왼쪽 으로 옮기고 한 줄 내리는 방식에서 차용한 듯 하다.

unix/rinux의 경우 \r만으로 개행을 하지만, 윈도우의 경우 CRLF를 통해 개행을 한다.

따라서 내가 \n을 통해 split을 한 경우, \r은 그대로 단어에 남아 trim()작업을 필요로 했다.

혹은 정규표현식을 이용해 numeric character를 제거할 때, range part에

[0–9] 를 [0–9,\n,\r]을 통해서

window.addEventListener(‘load’, function(){fetch(‘wordnote.txt’).then(response => response.text()).then(text=>text = text.replace(/[0–9,\r]/g, ‘’)).then(text => wordList = text.split(‘\n’))})

이렇게 줄일 수 있었다.

요약 — 윈도우에서 txt파일의 경우 개행을 \n이 아니라 \r\n으로 하기 때문에 \n으로 split 하게 되면 \r특수문자가 남게 된다.

--

--

zenibako.lee
zenibako.lee

Written by zenibako.lee

backend engineer, JS, Node, AWS

No responses yet