फोरट्रान - स्ट्रिंग्स

फोरट्रान भाषा पात्रों को एकल चरित्र या सन्निहित तार के रूप में मान सकती है।

एक वर्ण स्ट्रिंग लंबाई में केवल एक वर्ण हो सकता है, या यह शून्य लंबाई का भी हो सकता है। फोरट्रान में, चरित्र कांस्टेंट को दोहरे या एकल उद्धरणों की एक जोड़ी के बीच दिया जाता है।

आंतरिक डेटा प्रकार characterअक्षर और तार संग्रहीत करता है। स्ट्रिंग की लंबाई द्वारा निर्दिष्ट किया जा सकता हैlen specifier। यदि कोई लंबाई निर्दिष्ट नहीं है, तो यह है 1. आप एक स्ट्रिंग के भीतर अलग-अलग पात्रों को संदर्भित कर सकते हैं; बाएं सबसे अधिक वर्ण स्थिति 1 पर है।

स्ट्रिंग घोषणा

स्ट्रिंग घोषित करना अन्य चर के समान है -

type-specifier :: variable_name

उदाहरण के लिए,

Character(len = 20) :: firstname, surname

आप एक मान प्रदान कर सकते हैं जैसे,

character (len = 40) :: name  
name = “Zara Ali”

निम्न उदाहरण चरित्र डेटा प्रकार की घोषणा और उपयोग दर्शाता है -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 25)::greetings
   
   title = 'Mr.' 
   firstname = 'Rowan' 
   surname = 'Atkinson'
   greetings = 'A big hello from Mr. Beans'
   
   print *, 'Here is', title, firstname, surname
   print *, greetings
   
end program hello

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Here isMr.   Rowan          Atkinson       
A big hello from Mr. Bean

स्ट्रिंग कॉनटेनटेशन

संघ का संचालक //, संघात तार करता है।

निम्न उदाहरण यह प्रदर्शित करता है -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 40):: name
   character(len = 25)::greetings
   
   title = 'Mr.' 
   firstname = 'Rowan' 
   surname = 'Atkinson'
   
   name = title//firstname//surname
   greetings = 'A big hello from Mr. Beans'
   
   print *, 'Here is', name
   print *, greetings
   
end program hello

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Here is Mr. Rowan Atkinson       
A big hello from Mr. Bean

सबस्ट्रिंग निकालना

फोरट्रान में, आप स्ट्रिंग को अनुक्रमित करके स्ट्रिंग से ब्रैकेट की एक जोड़ी में स्टार्टिंग के अंतिम और अंतिम इंडेक्स को देते हुए स्ट्रिंग से एक सबस्ट्रिंग निकाल सकते हैं। इसे सीमा विनिर्देशक कहा जाता है।

निम्न उदाहरण दिखाता है कि स्ट्रिंग 'हैलो वर्ल्ड' से सब्स्ट्रिंग 'वर्ल्ड' कैसे निकाला जाए -

program subString

   character(len = 11)::hello
   hello = "Hello World"
   print*, hello(7:11)
   
end program subString

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

World

उदाहरण

निम्न उदाहरण का उपयोग करता है date_and_timeकार्य दिनांक और समय स्ट्रिंग देने के लिए। हम वर्ष, तिथि, माह, घंटा, मिनट और दूसरी जानकारी को अलग से निकालने के लिए सीमा-विस्तारकों का उपयोग करते हैं।

program  datetime
implicit none

   character(len = 8) :: dateinfo ! ccyymmdd
   character(len = 4) :: year, month*2, day*2

   character(len = 10) :: timeinfo ! hhmmss.sss
   character(len = 2)  :: hour, minute, second*6

   call  date_and_time(dateinfo, timeinfo)

   !  let’s break dateinfo into year, month and day.
   !  dateinfo has a form of ccyymmdd, where cc = century, yy = year
   !  mm = month and dd = day

   year  = dateinfo(1:4)
   month = dateinfo(5:6)
   day   = dateinfo(7:8)

   print*, 'Date String:', dateinfo
   print*, 'Year:', year
   print *,'Month:', month
   print *,'Day:', day

   !  let’s break timeinfo into hour, minute and second.
   !  timeinfo has a form of hhmmss.sss, where h = hour, m = minute
   !  and s = second

   hour   = timeinfo(1:2)
   minute = timeinfo(3:4)
   second = timeinfo(5:10)

   print*, 'Time String:', timeinfo
   print*, 'Hour:', hour
   print*, 'Minute:', minute
   print*, 'Second:', second   
   
end program  datetime

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं, तो यह विस्तृत तिथि और समय की जानकारी देता है -

Date String: 20140803
Year: 2014
Month: 08
Day: 03
Time String: 075835.466
Hour: 07
Minute: 58
Second: 35.466

स्ट्रिमिंग स्ट्रिंग्स

trim फ़ंक्शन एक स्ट्रिंग लेता है, और सभी अनुगामी रिक्त स्थान को निकालने के बाद इनपुट स्ट्रिंग देता है।

उदाहरण

program trimString
implicit none

   character (len = *), parameter :: fname="Susanne", sname="Rizwan"
   character (len = 20) :: fullname 
   
   fullname = fname//" "//sname !concatenating the strings
   
   print*,fullname,", the beautiful dancer from the east!"
   print*,trim(fullname),", the beautiful dancer from the east!"
   
end program trimString

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Susanne Rizwan      , the beautiful dancer from the east!
 Susanne Rizwan, the beautiful dancer from the east!

स्ट्रिंग्स का लेफ्ट और राइट एडजस्टमेंट

कार्यक्रम adjustl एक स्ट्रिंग लेता है और प्रमुख रिक्त स्थान को हटाकर और उन्हें रिक्त स्थान के रूप में जोड़कर वापस करता है।

कार्यक्रम adjustr एक स्ट्रिंग लेता है और अनुगामी रिक्त स्थान को हटाकर और उन्हें प्रमुख रिक्त स्थान के रूप में जोड़कर वापस करता है।

उदाहरण

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 40):: name
   character(len = 25):: greetings
   
   title = 'Mr. ' 
   firstname = 'Rowan' 
   surname = 'Atkinson'
   greetings = 'A big hello from Mr. Beans'
   
   name = adjustl(title)//adjustl(firstname)//adjustl(surname)
   print *, 'Here is', name
   print *, greetings
   
   name = adjustr(title)//adjustr(firstname)//adjustr(surname)
   print *, 'Here is', name
   print *, greetings
   
   name = trim(title)//trim(firstname)//trim(surname)
   print *, 'Here is', name
   print *, greetings
   
end program hello

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

Here is Mr. Rowan  Atkinson           
A big hello from Mr. Bean
Here is Mr. Rowan Atkinson    
A big hello from Mr. Bean
Here is Mr.RowanAtkinson                        
A big hello from Mr. Bean

एक स्ट्रिंग में एक विकल्प के लिए खोज

इंडेक्स फ़ंक्शन दो स्ट्रिंग्स लेता है और जांचता है कि क्या दूसरा स्ट्रिंग पहले स्ट्रिंग का एक विकल्प है। यदि दूसरा तर्क पहले तर्क का एक विकल्प है, तो यह एक पूर्णांक लौटाता है जो पहले स्ट्रिंग में दूसरे स्ट्रिंग का प्रारंभिक सूचकांक है, अन्यथा यह शून्य देता है।

उदाहरण

program hello
implicit none

   character(len=30) :: myString
   character(len=10) :: testString
   
   myString = 'This is a test'
   testString = 'test'
   
   if(index(myString, testString) == 0)then
      print *, 'test is not found'
   else
      print *, 'test is found at index: ', index(myString, testString)
   end if
   
end program hello

जब आप उपरोक्त कार्यक्रम को संकलित और निष्पादित करते हैं तो यह निम्नलिखित परिणाम उत्पन्न करता है -

test is found at index: 11