stringHelper.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. String.prototype.setReplaceWord = setReplaceWord;
  2. String.prototype.getByteLength = getByteLength;
  3. String.prototype.getTrim = getTrim;
  4. String.prototype.isByteSize = isByteSize;
  5. String.prototype.getTrimLeft = getTrimLeft;
  6. String.prototype.getTrimRight = getTrimRight;
  7. String.prototype.getLeftPad = getLeftPad;
  8. String.prototype.getRightPad = getRightPad;
  9. String.prototype.getCarrigeReturnRemove = getCarrigeReturnRemove;
  10. String.prototype.getCarrigeReturnReplace = getCarrigeReturnReplace;
  11. String.prototype.getByteString = getByteString;
  12. /**
  13. * @---------------------------------------------------
  14. * @desc : 값이 없는지 체크
  15. * @param : 체크할 문자열
  16. * @return : true or false
  17. * @---------------------------------------------------
  18. */
  19. function isNull(str){
  20. return ((str == null || str == "" || str == "undefined") ? true:false);
  21. }
  22. /**
  23. * @---------------------------------------------------
  24. * @desc : 문자열중의 특정 문자 또는 단어를 찾아 원하는 문자 또는 단어로 치환
  25. * <pre>
  26. * 1. 찾을 단어를 구분자로 분리한 문자열을 저장할 배열 변수지정
  27. * 2. 치환하여 리턴할 내용을 담을 변수 지정
  28. * 3. 원본 문자열을 찾을 단어를 구분자로 분리
  29. * 4. 찾을 단어의 수만큼 loop
  30. * - 찾을 단어 대신 대체 단어를 붙이면서 누적
  31. * 3. 마지막 찾을 단어의 뒷부분 내용 추가.
  32. * - 찾을 단어가 없었다면 원본 문자열 전체가 됨
  33. * </pre>
  34. * @param : findWord - 찾을 단어
  35. * @param : replaceWord - 대체 단어
  36. * @return : rtnSting - 대체하고난 문자열
  37. * @---------------------------------------------------
  38. */
  39. function setReplaceWord( findWord, replaceWord )
  40. {
  41. var tempArray;
  42. var rtnSting = "";
  43. tempArray = this.split(findWord);
  44. for(var i=0; i < tempArray.length-1; i++)
  45. {
  46. rtnSting += tempArray[i] + replaceWord;
  47. }
  48. rtnSting += tempArray[tempArray.length-1];
  49. return rtnSting;
  50. }
  51. /**
  52. * @---------------------------------------------------
  53. * @desc : 파라미터 값의 Byte 크기를 리턴
  54. * @param : N/A
  55. * @return : 파라미터 값의 Byte 크기
  56. * @---------------------------------------------------
  57. */
  58. function getByteLength()
  59. {
  60. // Byte 수를 저장할 변수
  61. var rtnValue = 0;
  62. // Value 값의 길이만큼 loop
  63. for(var i=0; i < this.length; i++)
  64. {
  65. //한글이 들어오면 255보다 크다
  66. (this.charCodeAt(i) > 255) ? rtnValue += 2 : rtnValue += 1;
  67. }
  68. return rtnValue;
  69. }
  70. /**
  71. * @---------------------------------------------------
  72. * @desc : 문자열의 Byte 크기가 제한값을 벗어나는지 체크 (벗어나면 false 리턴)
  73. * @param : pSize - 제한크기
  74. * @return : TRUE or FALSE
  75. * @---------------------------------------------------
  76. */
  77. function isByteSize(pSize)
  78. {
  79. return (this.getByteLength() <= eval(pSize) ? true : false);
  80. }
  81. /**
  82. * @---------------------------------------------------
  83. * @desc : 문자열을 원하는 바이트 크기로 만든다
  84. * @param : strValue : 문자열
  85. * @param : pMakeByteSize : 만들고자 하는 바이트수
  86. * @param : pByteSize : 문자열의 바이트수
  87. * @---------------------------------------------------
  88. */
  89. function getStringAsByte(strValue, pMakeByteSize, pByteSize)
  90. {
  91. var rtnValue = strValue;
  92. var sSpace = "";
  93. if (pByteSize > pMakeByteSize) return strValue;
  94. for( var iCnt = 1; iCnt <= pMakeByteSize-pByteSize; iCnt++) {
  95. sSpace = " " + sSpace;
  96. }
  97. rtnValue = sSpace + rtnValue;
  98. return rtnValue;
  99. }
  100. /**
  101. * @---------------------------------------------------
  102. * @desc : 문자열 앞뒤에있는 공백 제거
  103. * @param : N/A
  104. * @return : 공백을 제거한 결과 문자열
  105. * @---------------------------------------------------
  106. */
  107. function getTrim()
  108. {
  109. var startPoint = 0; // subString 하기 위한 시작 포인트
  110. var endPoint = this.length; // subString 하기 위한 끝 포인트
  111. //문자열앞에 공백문자가 들어 있는 Index 추출
  112. while( (startPoint < endPoint) && (this.charCodeAt(startPoint) == 32) )
  113. {
  114. startPoint++;
  115. }
  116. //문자열뒤에 공백문자가 들어 있는 Index 추출
  117. while( (startPoint < endPoint) && (this.charCodeAt(endPoint-1) == 32) )
  118. {
  119. endPoint--;
  120. }
  121. // 공백을 제거했으면 subString하여 결과문자열을 리턴하고 제거한 내용이 없으면 그대로 리턴
  122. return ( (startPoint > 0) || (endPoint < this.length) ) ? this.substring(startPoint, endPoint) : this;
  123. }
  124. /**
  125. * @---------------------------------------------------
  126. * @desc : 문자열 앞에 있는 공백 제거
  127. * @param : N/A
  128. * @return : 공백을 제거한 결과 문자열
  129. * @---------------------------------------------------
  130. */
  131. function getTrimLeft()
  132. {
  133. var i, j = 0;
  134. for (i = 0; i < this.length; i++) {
  135. if (this.charAt(i) == ' ') j = j + 1;
  136. else break;
  137. }
  138. return this.substr(j, this.length - j + 1);
  139. }
  140. /**
  141. * @---------------------------------------------------
  142. * @desc : 문자열 뒤에 있는 공백 제거
  143. * @param : N/A
  144. * @return : 공백을 제거한 결과 문자열
  145. * @---------------------------------------------------
  146. */
  147. function getTrimRight()
  148. {
  149. var i, j = 0;
  150. for (i = this.length - 1; i >= 0; i--) {
  151. if (this.charAt(i) == ' ') j = j + 1;
  152. else break;
  153. }
  154. return this.substr(0, this.length - j);
  155. }
  156. /**
  157. * @---------------------------------------------------
  158. * @desc : 저장된 숫자 값에 원하는 길이만큼 '0'을 붙여 표현
  159. * @param : pLen - 돌려받을 최종문자의 길이
  160. * @return : 지정길이보다 모자른경우 "0"값이 추가된 문자열
  161. * @return : 지정길이보다 큰경우 원래 문자열을 반환
  162. * @---------------------------------------------------
  163. */
  164. function getLeftPad( pLength, padString )
  165. {
  166. var rtnStr = eval(this);
  167. if (this.length < pLength) {
  168. for( var i = this.length; i < pLength; i++){
  169. rtnStr = padString + rtnStr;
  170. }
  171. }
  172. return rtnStr;
  173. }
  174. /**
  175. * @---------------------------------------------------
  176. * @desc : 저장된 문자 값에 원하는 길이만큼 뒤쪽에 ' '을 붙여 표현
  177. * @param : pLen - 돌려받을 최종문자의 길이
  178. * @return : 지정길이보다 모자른경우 " "값이 추가된 문자열
  179. * @return : 지정길이보다 큰경우 원래 문자열을 반환
  180. * @---------------------------------------------------
  181. */
  182. function getRightPad( pLength, padString )
  183. {
  184. var rtnStr = eval(this);
  185. if (this.length < pLength) {
  186. for( var i = this.length; i < pLength; i++){
  187. rtnStr = rtnStr + padString;
  188. }
  189. }
  190. return rtnStr;
  191. }
  192. /**
  193. * @---------------------------------------------------
  194. * @desc : 문자열의 길이를 구한다.
  195. * @param :
  196. * @return :
  197. * @---------------------------------------------------
  198. */
  199. function getStringLength(pData)
  200. {
  201. var sBit = "";
  202. var iLen = 0;
  203. for (var i = 0; i < pData.length; i++) {
  204. sBit = pData.charAt(i);
  205. if (escape(sBit).length > 4) iLen = iLen + 2;
  206. else iLen = iLen + 1;
  207. }
  208. return iLen;
  209. }
  210. /**
  211. * @---------------------------------------------------
  212. * @desc : CarrigeReturn을 없앤 문자열을 리턴한다.
  213. * @param :
  214. * @return :
  215. * @---------------------------------------------------
  216. */
  217. function getCarrigeReturnRemove() {
  218. return this.replace(/\s/g, "")
  219. }
  220. /**
  221. * @---------------------------------------------------
  222. * @desc : 전체 문장에서 특정 문장을 뒤에서 부터 찾는 함수
  223. * @param : strSrc - 전체 문장
  224. * @param : strFind - 찾을 문장
  225. * @return : int
  226. * @---------------------------------------------------
  227. */
  228. function getSearchStringRight(strSrc, strFind)
  229. {
  230. var pos = strSrc.indexOf(strFind);
  231. if(pos == -1)
  232. return -1;
  233. while(pos != -1)
  234. {
  235. var oldPos = pos;
  236. pos = strSrc.indexOf(strFind, oldPos + 1);
  237. }
  238. return oldPos;
  239. }
  240. /**
  241. * @---------------------------------------------------
  242. * @desc : 전체 문장에서 특정 문장이 있는지를 검사하는 함수
  243. * @param : strSrc - 전체 문장
  244. * @param : strFind - 찾을 문장
  245. * @return : boolean
  246. * @---------------------------------------------------
  247. */
  248. function isSearchString(strSrc, strFind)
  249. {
  250. var r, re;
  251. re = new RegExp(strFind);
  252. r = re.exec(strSrc);
  253. if (r)
  254. {
  255. return true;
  256. }
  257. return false;
  258. }
  259. /**
  260. * @---------------------------------------------------
  261. * @desc : 원하는 바이트만큼 문자열을 잘라옴. 만약 현재 문자열보다 자르고자 하는 바이트가 크면 현재 문자열 반환.
  262. * @param : bSize - 자르고자 하는 바이트크기(예:30 => 30byte)
  263. * @return : bSize 만큼의 문자열
  264. * @---------------------------------------------------
  265. */
  266. function getByteString(bSize) {
  267. if (this.getByteLength() <= bSize) {
  268. return this;
  269. }
  270. var rtnValue = "";
  271. for (var i = 0; i < this.length; i++) {
  272. if (rtnValue.getByteLength() >= bSize) {
  273. break;
  274. }
  275. rtnValue += this.charAt(i);
  276. }
  277. return rtnValue;
  278. }
  279. /**
  280. * @---------------------------------------------------
  281. * @desc : CarrigeReturn을 원하는 문자열로 반환한 다음 리턴한다.
  282. * @param : ch 바꾸고자 하는 문자열
  283. * @return :
  284. * @---------------------------------------------------
  285. */
  286. function getCarrigeReturnReplace(ch) {
  287. return this.replace(/\s/g, ch) ;
  288. }