2011-01-11 8 views
3

문자열에서 문자를 제거하려면 어떻게합니까?Fortran : 문자열에서 문자 제거

예를 들어 'year'라는 문자열이 있습니다.이 문자열을 4 자에서 2 개의 변경자로 변경하고 싶습니다. 그것은과 같이 정의된다 :

character(4) :: year = "2011"

어떻게 2 개 문자로 문자열을 잘라야 않는 대신 year = "2011"의 때문에, 그것은 year = "11"은? 나는 그것이 year(3:4) 생각하지만 나를 인용하지 않는

답변

2

당신은 참으로 year(3:4)을 사용할 수 있습니다; 그러나 문자열은 여전히 ​​4 자이며 두 자릿수와 두 개의 공백이 포함됩니다. 이를 설명하기 위해 여기 예입니다 :

program trunc 
    character(len=4) :: year = "2011" 

    write(*,'(A,A,A)') '..', year, '..' 
    year = year(3:4) 
    write(*,'(A,A,A)') '..', year, '..' 
end program trunc 

이것은 당신이 두 개의 문자 만 보유 할 수있는 변수에 값을 할당해야 정말 "11" 대신 "11 "의 얻으려면

..2011.. 
..11 .. 

를 인쇄합니다.

+0

가 후행 및 선행 공백을 제거하기를, 당신은 트림 (adjustl (문자열)) –

+0

를 사용할 수 있습니다. 'trim'을 사용하면 공백을 제거하지 않고 공백이 아닌 문자 만 표시/처리 할 수 ​​있습니다. 문자열의 '흥미로운'부분이 얼마나 오래인지 알면 관련 하위 문자열에 액세스 할 수도 있습니다. 그러나 OP가 변수를 "11"로 설정하는 것에 대해 묻자 정확히 공백을두기를 원하지 않는다고 가정했습니다. – canavanin

+0

사실, 맞습니다. trim (str)은 문자열의 길이를 변경하지 않습니다. 그것은 맛의 문제 일지 모르지만 나는 개인적으로 * 99와 같은 고정 된 큰 길이의 모든 문자열을 유지하는 것을 선호하므로 각 주어진 문자열의 정확한 길이를 기억할 필요가 없습니다. –

0

다음 명령을 사용합니다 : 그것은 부분적으로 사실이다 @Zhenya

trim(year(3:4)) 
+1

예제에서 'year (3 : 4)'는 길이 2 문자 표현 '11'이고 trim (year (3 : 4))은 정확히 동일합니다. 좀 더 일반적인 경우에는 length-1 또는 length-0 문자가 될 수 있습니다. 그래서,이 질문에 대답하는 것 같지 않습니다. 마지막으로, 표현식을 어떻게 사용 하시겠습니까? 'year = trim (year (3 : 4))'는 여전히 length-4 문자 변수로'year'를 남기고'trim'은 아무런 효과가 없습니다. – francescalus