Remove vowels from a string
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 test 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