Q&A

  • 문자열을 숫자로 바꿀때 공백처리는?
[질문] 문자열을 숫자로 바꿀때 공백처리는?

안녕하세요.

'가나다라 20' 이란 문자열이 있을때 뒤에서 3자리를 copy()로 읽어와서

숫자로 바꿔야 하거던요. '020' 이란 숫자는 결국 '20' 이란 숫자만 필요하게 됩니다.

이것 처리점 해주세요.

'가나다라' 뒤 꼭 3자리를 읽어와야 하는데 예를들어 '300' 이 될수도 있고...
'가나다라 1' 처럼 숫자가 한자리는 필요없습니다.
그러니까 두자리 아니면 세자리의 숫자만 들어오게 됩니다.
숫자가 아니면 필요없게 되버립니다.
만약, '가나다라20' 이란 문자열도 필요없습니다. 3자리 불러오면 어차피 깨질꺼니까요.




제가 한건 이렇게 했는데 showmessage에서 확인하면 '[]20' 이렇게 불러와 지네요. 사용할 문자열은 stringgrid1.cells[2,i] 구요.


* (     [] 는 한글 깨질때 나오는 이상한 문자 예를들어 '네모'   )
trim() 으로 해도 '네모'는 그냥 따라오네요.


  tempstr := copy(stringgrid1.cells[2,i],length(stringgrid1.cells[2,i])-3,length(stringgrid1.cells[2,i]));
  showmessage(tempstr);
  tempfloat := strtofloat(tempstr);

감사합니다. 수고하세요.
3  COMMENTS
  • Profile
    김종화 2002.11.05 03:53
    제가 질문을 잘 이해했는지 몰겠는데요..

    문자열의 뒤에3개 문자를 잘라내서 숫자로 변환하시려는건가 본데...

    그 3문자중에 숫자가 아닌 문자가 껴 있을 경우 처리하는건가여?

    그럼 그 3문자가 숫자인지 아닌지 비교해 주면 될거 같은데요...

    (tempstr[1] >= '0') and (tempstr[1] <= '9')

    이런 조건이면 숫자겠구.. 아님 숫자가 아니겠져...

    숫자가 아니면 '0'으로 채워넣구 2번째 3번째 문자 비교하면 될거같네요..^^;;





  • Profile
    개미 2002.11.05 04:07

    넹. 감사합니다.

    '가나다라 30' 이란 문자가 있다면.. 뒤에서 3글자를 불러와서

    trim 처리 하면 '30'만 남을꺼 같아서 했는데 '[]30'이 나오는군요.

    * [] 한글깨질때 생기는 '네모'

    요것만 해결되면 될꺼 같은데 점 어렵네요~

    다시 말씀 드리자면요.

    '가나다라 222'
    '가나다라 22'

    요 두가지의 경우만 필요합니다.

    첫 번째 경우는 뒤에서 3자리 copy로 가져오면 되구요.

    두번째 경우는 뒤에서 3자리 copy 로 가져오면 '공백22' 이렇게 되니까

    trim 써서 '22' 로 불러 올라구 했는데 안되서 그런거구요.

    물론 '가나다라22 ' 이런건 '22공백' 이렇게 되도 '22' 만 필요하구요.

    나머지 경우는 필요없거던요.

    ㅎㅎ 감사합니다.


  • Profile
    깨구락지 2002.11.05 19:59
    pos함수를 사용하면 될것같군요.
    function Pos(Substr: string; S: string): Integer;

    tString:='가나다라 222';
    sString:=copy(tString,pos(' ',tString)+1,length(tString));
    if length(sString)>=2 then
      tInt:=StrToInt(sString)
    else
      tInt:=0;