Extract file extension: Difference between revisions

m
m (→‎{{header|C++}}: Fixed formatting and code output)
 
(6 intermediate revisions by 4 users not shown)
Line 929:
document.txt_backup
/etc/pam.d/login</pre>
 
=={{header|EasyLang}}==
<syntaxhighlight>
func isalphanum c$ .
c = strcode c$
return if c >= 65 and c <= 90 or c >= 97 and c <= 122 or c >= 48 and c <= 57
.
func$ exext path$ .
for i = len path$ downto 1
c$ = substr path$ i 1
if isalphanum c$ = 1
ex$ = c$ & ex$
elif c$ = "."
return ex$
else
break 1
.
.
.
for s$ in [ "http://example.com/download.tar.gz" "CharacterModel.3DS" ".desktop" "document" "document.txt_backup" "/etc/pam.d/login" ]
print s$ & " -> " & exext s$
.
</syntaxhighlight>
 
=={{header|Emacs Lisp}}==
Line 1,173 ⟶ 1,196:
/etc/pam.d/login (empty string)
</pre>
 
 
=={{header|Frink}}==
Line 1,385 ⟶ 1,409:
 
=={{header|Java}}==
<syntaxhighlight lang="java">public class Test {
import java.io.File;
</syntaxhighlight>
public static void main(String[] args) {
<syntaxhighlight lang="java">
String[] filenames = { "http://example.com/download.tar.gz",
public static void main(String[] args) {
"CharacterModel.3DS",
String[] strings = {
".desktop",
"http://example.com/download.tar.gz",
"document",
"documentCharacterModel.txt_backup3DS",
"/etc/pam.d/logindesktop",
};"document",
"document.txt_backup",
"/etc/pam.d/login",
};
for (String string : strings)
System.out.println(extractExtension(string));
}
 
static String for extractExtension(String filename : filenamesstring) {
/* we can use the 'File' class to Stringextract extthe =file-name "null";*/
File file = new File(string);
int idx = filename.lastIndexOf('.');
String filename = file.getName();
if (idx != -1) {
int String tmpindexOf = filename.substringlastIndexOf(idx'.');
if (indexOf != -1) {
if (tmp.matches("\\.[a-zA-Z0-9]+")) {
String extextension = tmpfilename.substring(indexOf);
/* and use a regex to match only }valid extensions */
if (extension.matches("\\.[A-Za-z\\d]+"))
}
System.out.println(filenamereturn + " -> " + ext)extension;
}
}
return "";
}</syntaxhighlight>
}
</syntaxhighlight>
{{Out}}
<pre>
<pre>http://example.com/download.tar.gz -> .gz
.gz
CharacterModel.3DS -> .3DS
.3DS
.desktop -> .desktop
.desktop
document -> null
 
document.txt_backup -> null
 
/etc/pam.d/login -> null</pre>
</pre>
 
=={{header|javascript}}==
Line 1,955 ⟶ 1,987:
null ok
></pre>
=={{header|Pascal}}==
==={{header|Free Pascal}}===
<syntaxhighlight lang="pascal">
Program Extract_file_extension;
 
{FreePascal has the built-in function ExtractFileExt which returns the file extension.
* it does need charachters before the period to return the proper extension and it returns
* the extension including the period}
 
Uses character,sysutils;
 
Const arr : array of string = ('http://example.com/download.tar.gz','CharacterModel.3DS','.desktop',
'document','document.txt_backup','/etc/pam.d/login');
 
Function extractextension(fn: String): string;
Var
i: integer;
Begin
fn := 'prefix' + fn; {add charachters before the period}
fn := ExtractFileExt(fn);
For i := 2 to length(fn) Do {skip the period}
If Not IsLetterOrDigit(fn[i]) Then exit('');
extractextension := fn;
End;
 
Var i : string;
Begin
For i In arr Do
writeln(i:35,' -> ',extractextension(i))
End.
 
</syntaxhighlight>
{{out}}
<pre>
http://example.com/download.tar.gz -> gz
CharacterModel.3DS -> 3DS
.desktop -> desktop
document ->
document.txt_backup ->
/etc/pam.d/login ->
</pre>
 
=={{header|Perl}}==
Line 2,925 ⟶ 2,998:
{{libheader|Wren-pattern}}
{{libheader|Wren-fmt}}
<syntaxhighlight lang="ecmascriptwren">import "./pattern" for Pattern
import "./fmt" for Fmt
 
var p = Pattern.new("/W") // matches any non-alphanumeric character
2,063

edits