Remove non-letters from a string

From CodeCodex

Related content:

Implementations[edit]

C[edit]

if buff's content is: "15+41-2Hel54lo **1212 Wor2ld! Ho5w Are 6996 Yo7u?" then the content of buff_02 will be: "HelloWorldHowAreYou"

#include <string.h>

while (i != strlen (buff))
{
	if ((buff[i] >= 65) && (buff[i] <= 90) || (buff[i] >= 97) && (buff[i] <= 122))
	{
		buff_02[j] = buff[i];
		i++;
		j++;
	}
	else
	{
		i++;
	}
}

Erlang[edit]

S = "how19 a*re 254y**ou?".
re:replace(S, "[^A-Za-z]", "", [global, {return, list}]).

Haskell[edit]

import Data.Char ( isLetter )

removeNonLetters = filter isLetter

In ghci:

*Main> :t removeNonLetters 
removeNonLetters :: [Char] -> [Char]
*Main> removeNonLetters "15+41-2Hel54lo **1212 Wor2ld! Ho5w Are 6996 Yo7u?"
"HelloWorldHowAreYou"

Java[edit]

This code removes common symbols and numbers from a string, returning letters only. (Note, not all symbols are included.)

 static String lettersOnly(String s) {
    return s.replaceAll("[^a-zA-Z]","");
 }

JavaScript[edit]

var s = "how19 a*re 254y**ou?";

document.write(s.replace(/[^A-Za-z]/g, ""));

This didn't work for me. parseInt(string) would.

Objective-C[edit]

@interface NSString (RemoveNonLetters)
- (NSString *)removeNonLetters;
@end

@implementation NSString (RemoveNonLetters)
- (NSString *)removeNonLetters {
  return [[self componentsSeparatedByCharactersInSet:[[NSCharacterSet letterCharacterSet] invertedSet]] componentsJoinedByString:@""];
}
@end

For example:

NSString *s = @"133t H4x0r";
NSLog(@"%@", [s removeNonLetters]); // prints "tHxr"

OCaml[edit]

 # let remove_nonalpha = Str.global_replace (Str.regexp "[^a-zA-Z]+") "";;
 val remove_nonalpha : string -> string = <fun>

For example:

 # remove_nonalpha "133t H4x0r";;
 - : string = "tHxr"

Perl[edit]

 s/[\W\d_]//g; # remove all non-word characters and digits and underscores

PHP[edit]

$result = preg_replace('/[^A-Za-z]/', '', $string);

Python[edit]

s = "hello world! how are you? 0"

# Short version
print filter(lambda c: c.isalpha(), s)

# Faster version for long ASCII strings:
id_tab = "".join(map(chr, xrange(256)))
tostrip = "".join(c for c in id_tab if c.isalpha())
print s.translate(id_tab, tostrip)

# Using regular expressions
print re.sub("[^A-Za-z]", "", s)

Ruby[edit]

s = "how19 a*re 254y**ou?";
puts s.delete("^a-zA-Z")
puts s.gsub(/[^a-zA-Z]/, "")
puts s.gsub(/(\W|\d)/, "")

Tcl[edit]

 proc remove_non_ascii_letters s {regsub -all {[^a-zA-Z]} $s ""}
 remove_non_ascii_letters "hello world! how are you? 0é" ;# -> helloworldhowareyou

Visual Basic[edit]

Public Function ReturnAlpha(ByVar sString As String) As String
Dim i As Integer
For i = 1 To Len(sString)
    If Mid(sString, i, 1) Like "[A-Za-z]" Then
        ReturnAlpha = ReturnAlpha + Mid(sString, i, 1)
    End If
Next i
End Function

WinBatch[edit]

; Remove non-letters from a string, assuming space as non-letter character.

strString = "15+41-2Hel54lo **1212 Wor2ld! Ho5w Are 6996 Yo7u?"

; Example 1
strClean1 = StrClean (strString, "0123456789+-*/!?.,;:~@ ", "", @TRUE, 1) 
; strClean1 = "HelloWorldHowAreYou"

; Example 2
strClean2 = StrClean (strString, "abcdefghijklmnopqrstuvwxyz", "", @FALSE, 2) 
; strClean2 = "HelloWorldHowAreYou"

; Example 3
objRegExp = ObjectCreate ("VBScript.RegExp")
objRegExp.IgnoreCase = @TRUE
objRegExp.MultiLine = @FALSE
objRegExp.Global = @TRUE
objRegExp.Pattern = "[^a-z]"
strClean3 = objRegExp.Replace(strString, "") 
objRegExp = 0
; strClean3 = "HelloWorldHowAreYou"

Exit
; This code example was written by Detlev Dalitz.

Zsh[edit]

s="Hello, World! How are you? 1... 2... 3..."
print "${s//[^a-zA-Z]/}"