Extract file extension: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 82: | Line 82: | ||
=={{header|Ada}}== |
=={{header|Ada}}== |
||
==={{header|As originally specified}}=== |
|||
<lang Ada>with Ada.Text_IO; use Ada.Text_IO; |
<lang Ada>with Ada.Text_IO; use Ada.Text_IO; |
||
with Ada.Strings.Fixed; use Ada.Strings.Fixed; |
with Ada.Strings.Fixed; use Ada.Strings.Fixed; |
||
Line 128: | Line 129: | ||
/etc/pam.d/login: -> |
/etc/pam.d/login: -> |
||
</pre> |
</pre> |
||
==={{header|In response to problem discussions}}=== |
|||
<lang Ada>with Ada.Text_IO; use Ada.Text_IO; |
|||
with Ada.Strings.Fixed; use Ada.Strings.Fixed; |
|||
use Ada.Strings; |
|||
with Ada.Characters.Handling; use Ada.Characters.Handling; |
|||
procedure Main is |
|||
function extension (S : in String) return String is |
|||
P_Index : Natural; |
|||
begin |
|||
P_Index := |
|||
Index (Source => S, Pattern => ".", From => S'Last, Going => Backward); |
|||
if P_Index < 2 or else P_Index = S'Last then |
|||
return ""; |
|||
else |
|||
for C of S (P_Index + 1 .. S'Last) loop |
|||
if not Is_Alphanumeric (C) then |
|||
return ""; |
|||
end if; |
|||
end loop; |
|||
return S (P_Index .. S'Last); |
|||
end if; |
|||
end extension; |
|||
F1 : String := "http://example.com/download.tar.gz"; |
|||
F2 : String := "CharacterModel.3DS"; |
|||
F3 : String := ".desktop"; |
|||
F4 : String := "document"; |
|||
F5 : String := "document.txt_backup"; |
|||
F6 : String := "/etc/pam.d/login:"; |
|||
F7 : String := "filename."; |
|||
F8 : String := "."; |
|||
begin |
|||
Put_Line (F1 & " -> " & extension (F1)); |
|||
Put_Line (F2 & " -> " & extension (F2)); |
|||
Put_Line (F3 & " -> " & extension (F3)); |
|||
Put_Line (F4 & " -> " & extension (F4)); |
|||
Put_Line (F5 & " -> " & extension (F5)); |
|||
Put_Line (F6 & " -> " & extension (F6)); |
|||
Put_Line (F7 & " -> " & extension (F7)); |
|||
Put_Line (F8 & " -> " & extension (F8)); |
|||
end Main; |
|||
</lang> |
|||
{{output}} |
|||
<pre> |
|||
http://example.com/download.tar.gz -> .gz |
|||
CharacterModel.3DS -> .3DS |
|||
.desktop -> |
|||
document -> |
|||
document.txt_backup -> |
|||
/etc/pam.d/login: -> |
|||
filename. -> |
|||
. -> |
|||
</pre> |
|||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |