*** 문자열 시작부분, SPACE 다음, '-' 다음 부분을 대문자로 변경하고
나머지는 소문자로 변경합니다.
Q&A 에 질문이 있어서 만들어 봤습니다. 도움이 되시길... ***
댓글 8
-
민버미꺼!
2009.03.09 23:35
-
민버미꺼!
2009.03.09 23:37
참고로 저는 이전 문자가 l_ca_char에 포함이 된다면 현재 문자를 대문자로 변경하도록 구현했습니다. -
Mike
2009.03.10 02:11
유용하게 쓰겠읍니다. -
Gwang Chul
2009.03.10 02:30
<P>문제가 있습니다.</P>
<P>대문자를 고려하지 않았고 - 와 같은 부호가 있는 경우를 고려하지 않았습니다.</P> -
SAYA
2009.03.10 17:17
Gwang Chul 님의 의견을 참고하여 민버미꺼님의 소스를 수정한다면...
l_ca_char(20) --> l_ca_char(45) 로 length 를 변경하면 '-' 부분은
해결되겠네요
아래 DO 문에서 lower case 로 변환하는 부분을 추가하면 대문자가
포함되어 있는 경우 나머지 부분은 소문자로 변경합니다.
*** 수정된 소스 ***
DATA : l_str(100), "Input String
l_len TYPE i, "String Length
l_ca_char(45), "Contain String
l_pre_char, "Pre Char
l_currenct_idx TYPE i. "Looping Current Index
l_ca_char = ' _0123456789.,=()[]{}-;:<>|@^~*+-/#''?$%&!"'.
l_str = 'asdfdsaf bfsdfsd cfsadf dfdsfds efdsaf-ffasdf gfdasf'.
l_len = STRLEN( l_str ).
l_currenct_idx = 0.
l_pre_char = l_str+l_currenct_idx(1).
* First char translate
IF NOT l_str+l_currenct_idx(1) IS INITIAL.
TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.
l_currenct_idx = 1.
ENDIF.
**
DO l_len TIMES.
IF l_pre_char ca l_ca_char.
TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.
ELSE.
TRANSLATE l_str+l_currenct_idx(1) TO LOWER CASE.
ENDIF.
l_pre_char = l_str+l_currenct_idx(1).
ADD 1 TO l_currenct_idx.
ENDDO.
write:/ 'Result : ', l_str. -
민버미꺼!
2009.03.10 18:03
<P>모든 분들 감사합니다..대문자를 미처...좋은 하루 보내세요</P> -
민버미꺼!
2009.03.11 19:03
<P>완성본입니다.</P>
<P> DATA : l_str(100), "Input String<BR> l_len TYPE i, "String Length<BR> l_ca_char(50), "Contain String<BR> l_pre_char, "Pre Char<BR> l_currenct_idx TYPE i. "Looping Current Index</P>
<P> l_ca_char = ' _0123456789.,=()[]{}-;:<>|@^~*+-/#''?$%&!"'.<BR> l_str = 'asdfdsaf bfsGfsd cHsadf dfdsCds efdsaf-ffaDdf gfdasf'.</P>
<P> l_len = STRLEN( l_str ).</P>
<P> l_currenct_idx = 0.</P>
<P> l_pre_char = l_str+l_currenct_idx(1).</P>
<P>* First char translate<BR> IF l_str+l_currenct_idx(1) IS NOT INITIAL.</P>
<P> TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.</P>
<P> l_currenct_idx = 1.</P>
<P> ENDIF.<BR>**</P>
<P> DO l_len TIMES.</P>
<P> IF l_pre_char ca l_ca_char.</P>
<P> TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.</P>
<P> else.</P>
<P> TRANSLATE l_str+l_currenct_idx(1) TO LOWER CASE.</P>
<P> ENDIF.</P>
<P> l_pre_char = l_str+l_currenct_idx(1).</P>
<P> ADD 1 TO l_currenct_idx.</P>
<P> ENDDO.</P>
<P> write:/ 'Result : ', l_str.</P> -
린짱아
2009.03.25 00:04
감사요~~~~
<P>저두 이제 막 완성하여 올리려고 했는데..참고로 저의 소스 입니다.</P>
<P> </P>
<P> DATA : l_str(100), "Input String<BR> l_len TYPE i, "String Length<BR> l_ca_char(20), "Contain String<BR> l_pre_char, "Pre Char<BR> l_currenct_idx TYPE i. "Looping Current Index</P>
<P> l_ca_char = ' _0123456789.,=()[]{}-;:<>|@^~*+-/#''?$%&!"'.<BR> l_str = 'asdfdsaf bfsdfsd cfsadf dfdsfds efdsaf-ffasdf gfdasf'.</P>
<P> l_len = STRLEN( l_str ).</P>
<P> l_currenct_idx = 0.</P>
<P> l_pre_char = l_str+l_currenct_idx(1).</P>
<P>* First char translate<BR> IF l_str+l_currenct_idx(1) IS NOT INITIAL.</P>
<P> TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.</P>
<P> l_currenct_idx = 1.</P>
<P> ENDIF.<BR>**</P>
<P> DO l_len TIMES.</P>
<P> IF l_pre_char ca l_ca_char.</P>
<P> TRANSLATE l_str+l_currenct_idx(1) TO UPPER CASE.</P>
<P> ENDIF.</P>
<P> l_pre_char = l_str+l_currenct_idx(1).</P>
<P> ADD 1 TO l_currenct_idx.</P>
<P> ENDDO.</P>
<P> write:/ 'Result : ', l_str.</P>