Remove vowels from a string: Difference between revisions
(Added Wren) |
(Added Algol 68) |
||
Line 2: | Line 2: | ||
Remove vowels from a string |
Remove vowels from a string |
||
=={{header|ALGOL 68}}== |
|||
<lang algol68>BEGIN |
|||
# returns s with the vowels removed # |
|||
OP DEVOWEL = ( STRING s )STRING: |
|||
BEGIN |
|||
[ LWB s : UPB s ]CHAR result; |
|||
INT r pos := LWB result - 1; |
|||
FOR s pos FROM LWB s TO UPB s DO |
|||
IF NOT char in string( s[ s pos ], NIL, "aeiouAEIOU" ) THEN |
|||
# have a non-vowel - add it to the output # |
|||
r pos +:= 1; |
|||
result[ r pos ] := s[ s pos ] |
|||
FI |
|||
OD; |
|||
result[ LWB s : r pos ] |
|||
END # DEVOWEL # ; |
|||
# tests the DEVOWEL operator # |
|||
PROC test devowel = ( STRING s )VOID: |
|||
print( ( "<", s, "> -> <", DEVOWEL s, ">", newline ) ); |
|||
# some cases # |
|||
test devowel( "" ); |
|||
test devowel( "aAeEiIoOuU" ); |
|||
test devowel( "bcdfghjklmnprstvwxyz" ); |
|||
test devowel( "abcdefghijklmnoprstuvwxyz" ); |
|||
test devowel( "Algol 68 Programming Language" ) |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
<> -> <> |
|||
<aAeEiIoOuU> -> <> |
|||
<bcdfghjklmnprstvwxyz> -> <bcdfghjklmnprstvwxyz> |
|||
<abcdefghijklmnoprstuvwxyz> -> <bcdfghjklmnprstvwxyz> |
|||
<Algol 68 Programming Language> -> <lgl 68 Prgrmmng Lngg> |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |
Revision as of 11:39, 25 July 2020
Remove vowels from a string
ALGOL 68
<lang algol68>BEGIN
# returns s with the vowels removed # OP DEVOWEL = ( STRING s )STRING: BEGIN [ LWB s : UPB s ]CHAR result; INT r pos := LWB result - 1; FOR s pos FROM LWB s TO UPB s DO IF NOT char in string( s[ s pos ], NIL, "aeiouAEIOU" ) THEN # have a non-vowel - add it to the output # r pos +:= 1; result[ r pos ] := s[ s pos ] FI OD; result[ LWB s : r pos ] END # DEVOWEL # ; # tests the DEVOWEL operator # PROC test devowel = ( STRING s )VOID: print( ( "<", s, "> -> <", DEVOWEL s, ">", newline ) ); # some cases # test devowel( "" ); test devowel( "aAeEiIoOuU" ); test devowel( "bcdfghjklmnprstvwxyz" ); test devowel( "abcdefghijklmnoprstuvwxyz" ); test devowel( "Algol 68 Programming Language" )
END</lang>
- Output:
<> -> <> <aAeEiIoOuU> -> <> <bcdfghjklmnprstvwxyz> -> <bcdfghjklmnprstvwxyz> <abcdefghijklmnoprstuvwxyz> -> <bcdfghjklmnprstvwxyz> <Algol 68 Programming Language> -> <lgl 68 Prgrmmng Lngg>
Go
<lang go>package main
import (
"fmt" "strings"
)
func removeVowels(s string) string {
var sb strings.Builder vowels := "aeiouAEIOU" for _, c := range s { if !strings.ContainsAny(string(c), vowels) { sb.WriteRune(c) } } return sb.String()
}
func main() {
s := "Go Programming Language" fmt.Println("Input :", s) fmt.Println("Output :", removeVowels(s))
}</lang>
- Output:
Input : Go Programming Language Output : G Prgrmmng Lngg
REXX
using the TRANSLATE BIF
<lang rexx>/*REXX program removes vowels (both lowercase and uppercase) from a string. */ parse arg x /*obtain optional argument from the CL.*/ if x= | x="," then x= 'REXX Programming Language' /*Not specified? Then use default*/ say ' input string: ' x $= translate( xrange(), ., ' ') /*define a string of almost all chars. */ q= substr($, verify($, x), 1) /*find a character NOT in the X string.*/ y= translate(x, q, " ") /*trans. blanks in the string (for now)*/ y= space(translate(y, , 'AEIOUaeiou'), 0) /*trans. vowels──►blanks, elide blanks.*/ y= translate(y, , q) /*trans the Q characters back to blanks*/ say 'output string: ' y /*stick a fork in it, we're all done. */</lang>
- output when using the default input:
input string: REXX Programming Language output string: RXX Prgrmmng Lngg
using character eliding
<lang rexx>/*REXX program removes vowels (both lowercase and uppercase) from a string. */ parse arg x /*obtain optional argument from the CL.*/ if x= | x="," then x= 'REXX Programming Language' /*Not specified? Then use default*/ say ' input string: ' x x= . || x /*prefix string with a dummy character.*/
do j=length(x)-1 by -1 for length(x)-1 /*process the string from the back─end.*/ _= pos( substr(x, j, 1), 'AEIOUaeiou') /*is this particular character a vowel?*/ if _==0 then iterate /*if zero (not a vowel), then skip it.*/ x= left(x, j - 1) || substr(x, j + 1) /*elide the vowel just detected from X.*/ end /*j*/
x= substr(x, 2) /*elide the prefixed dummy character. */ say 'output string: ' x /*stick a fork in it, we're all done. */</lang>
- output is identical to the 1st REXX version.
Ring
<lang ring> load "stdlib.ring" str = "Ring Programming Language" see "Input : " + str + nl for n = 1 to len(str)
if isVowel(str[n]) str = substr(str,str[n],"") ok
next see "String without vowels: " + str + nl </lang>
- Output:
Input : Ring Programming Language String without vowels: Rng Prgrmmng Lngg
Wren
<lang ecmascript>var removeVowels = Fn.new { |s| s.where { |c| !"aeiouAEIOU".contains(c) }.join() }
var s = "Wren Programming Language" System.print("Input : %(s)") System.print("Output : %(removeVowels.call(s))")</lang>
- Output:
Input : Wren Programming Language Output : Wrn Prgrmmng Lngg