Top Banner
Comparison of programming languages (string functions) From Wikipedia, the free encyclopedia Jump to: navigation , search "String functions" redirects here. For string functions in formal language theory, see String operations . Programming language comparisons General comparison Basic syntax Basic instructions Arrays Associative arrays String operations String functions List comprehension Object-oriented programming Object-oriented constructors Database access Database RDBMS Evaluation strategy List of "hello world" programs ALGOL 58's influence on ALGOL 60 ALGOL 60: Comparisons
35
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Comparison of Programming Languages

Comparison of programming languages (string functions)From Wikipedia, the free encyclopediaJump to: navigation, search "String functions" redirects here. For string functions in formal language theory, see String operations.

Programming language comparisons

General comparison

Basic syntax

Basic instructions

Arrays

Associative arrays

String operations

String functions

List comprehension

Object-oriented programming

Object-oriented constructors

Database access

Database RDBMS

Evaluation strategy

List of "hello world" programs

ALGOL 58's influence on ALGOL 60

ALGOL 60: Comparisons with other languages

Comparison of ALGOL 68 and C++

ALGOL 68: Comparisons with other languages

Compatibility of C and C++

Comparison of Pascal and Borland

Page 2: Comparison of Programming Languages

Delphi

Comparison of Pascal and C

Comparison of Java and C++

Comparison of Java and C#

Comparison of C# and Visual Basic .NET

This box: view • talk • edit

String functions are used in computer programming languages to manipulate a string or query information about a string (some do both).

Most computer programming languages that have a string datatype will have some string functions although there may be other low level ways within each language to handle strings directly. In object oriented languages, string functions are often implemented as properties and methods of string objects. In functional and list based languages a string is represented as a list (of character codes), therefore all list-manipulation procedures could be considered string functions. However such languages may implement a subset of explicit string-specific functions as well.

The most basic example of a string function is the length(string) function. This function returns the length of a string literal.

eg. length("hello world") would return 11.

Other languages may have string functions with similar or exactly the same syntax or parameters or outcomes. For example in many languages the length function is usually represented as len(string). The below list of common functions aims to help limit this confusion.

Contents

[hide]

1 Common String Functions (multi language reference) o 1.1 CharAt o 1.2 Compare (integer result) o 1.3 Compare (relational operator-based, Boolean result) o 1.4 Concatenation o 1.5 Contains o 1.6 Equality o 1.7 Find o 1.8 Find character o 1.9 Format o 1.10 Inequality o 1.11 index o 1.12 indexof

Page 3: Comparison of Programming Languages

o 1.13 instr o 1.14 instrrev o 1.15 join o 1.16 lastindexof o 1.17 left o 1.18 len o 1.19 length o 1.20 locate o 1.21 Lowercase o 1.22 mid o 1.23 partition o 1.24 replace o 1.25 reverse o 1.26 rfind o 1.27 right o 1.28 rpartition o 1.29 slice o 1.30 split o 1.31 sprintf o 1.32 strip o 1.33 strcmp o 1.34 substring o 1.35 Uppercase o 1.36 trim

2 Notes 3 External links

[edit] Common String Functions (multi language reference)

Here is a list of common string functions which are found in other languages. Any other equivalent functions used by other languages are also listed. The below list of common functions aims to help programmers find the equivalent function in a language. Note, string concatenation and regular expressions are handled in separate pages. Statements in guillemets (« … ») are optional.

[edit] CharAt

Definition charAt(string,integer) returns character.Description Returns character at index in the string.Equivalent See substring of length 1 character.

Format LanguagesBase index

string[i] ALGOL 68, Pascal, Object Pascal (Delphi) 1

Page 4: Comparison of Programming Languages

string[i]C, C++, C#, D, Go, Python1, PHP, Ruby1, Windows PowerShell

0

string{i} PHP (deprecated in 5.3) 0string(i) Ada ≥1Mid(string,i,1) VB 1string.Chars(i) VB.NET 0string(i:i) Fortran 1string.charAt(i) Java, JavaScript 0string.[i] OCaml, F# 0String.sub (string, i) Standard ML 0string !! i Haskell 0(string-ref string i) Scheme 0(char string i) Common Lisp 0substr(string, i, 1) Perl1 0string.at(i) C++ (std::string only) (w/ bounds checking) 0lists:nth(i, string) Erlang 1[string characterAtIndex:i]

Objective-C (NSString * only) 0

string.sub(string, i, i)(string):sub(i, i)

Lua1 1

string index string i Tcl 0

1. In this language, the index can be negative, which then indicates the number of places before the end of the string.

# Example in ALGOL 68 #"Hello, World"[2]; // 'e'// Example in C#"Hello, World"[2]; // 'l'# Examples in Python"Hello, World"[2] # 'l'"Hello, World"[-3] # 'r'' Example in Visual BasicGetChar("Hello, World", 2) ' "e"' Example in Visual Basic .NET"Hello, World".Chars(2) ' "l"c

[edit] Compare (integer result)

Definition compare(string1,string2) returns integer.

Description

Compares two strings to each other. If they are equivalent, a zero is returned. Otherwise, most of these routines will return a positive or negative result corresponding to whether string1 is lexicographically greater than, or less than, respectively, than string2. The exceptions are the Scheme and REXX routines which return the index of the first mismatch.

Format Languages

Page 5: Comparison of Programming Languages

IF string1<string2 THEN -1 ELSE ABS (string1>string2) FI

ALGOL 68

cmp(string1, string2) Python (before 3.0 only)strcmp(string1, string2) C, C++ (char * only), PHPstd.string.cmp(string1, string2) DStrComp(string1, string2) VBstring1 cmp string2 Perlstring1 <=> string2 Rubystring1.compare(string2) C++ (std::string only)compare(string1, string2) REXXCompareStr(string1, string2) Pascal, Object Pascal (Delphi)string1.compareTo(string2) Javastring1.CompareTo(string2) VB .NET, C#, F#(string= string1 string2) Common Lisp(string-compare string1 string2 p< p= p>) Scheme (SRFI 13)compare string1 string2 OCaml

String.compare (string1, string2)Standard ML (returns LESS, EQUAL, or GREATER)

compare string1 string2 Haskell (returns LT, EQ, or GT)[string]::Compare(string1, string2) Windows PowerShell[string1 compare:string2] Objective-C (NSString * only)LLT(string1,string2)LLE(string1,string2)LGT(string1,string2)LGE(string1,string2)

Fortran (returns .TRUE. or .FALSE.)

string1.localeCompare(string2) JavaScriptbytes.Compare([]byte(string1), []byte(string2)) Gostring compare ?-nocase? ?-length int? string1 string2

Tcl

# Example in Pythoncmp("hello", "world") # returns -1/** Example in REXX */ compare("hello", "world") /* returns index of mismatch: 1 */; Example in Scheme(use-modules (srfi srfi-13)); returns index of mismatch: 0(string-compare "hello" "world" values values values)

[edit] Compare (relational operator-based, Boolean result)

Definition string1 op string2 OR (compare string1 string2) returns Boolean.Description Lexicographically compares two strings using a relational operator or function.

Page 6: Comparison of Programming Languages

Boolean result returned.Format Languages

string1 op string2, where op can be any of =, <>, <, >, <= and >=

Pascal, Object Pascal (Delphi), OCaml, Standard ML, VB, VB .NET, F#

string1 op string2, where op can be any of =, /=, ≠, <, >, <=, ≤ and ≥; Also: EQ, NE, LT, LE, GE and GT

ALGOL 68

(stringX? string1 string2), where X can be any of =, -ci=, <, -ci<, >, -ci>, <=, -ci<=, >= and -ci>= (operators starting with '-ci' are case-insensitive)

Scheme

(stringX string1 string2), where X can be any of =, -ci=, <>, -ci<>, <, -ci<, >, -ci>, <=, -ci<=, >= and -ci>= (operators starting with '-ci' are case-insensitive)

Scheme (SRFI 13)

(stringX string1 string2), where X can be any of =, -equal, /=, -not-equal, <, -lessp, >, -greaterp, <=, -not-greaterp, >= and -not-lessp (the verbal operators are case-insensitive)

Common Lisp

string1 op string2, where op can be any of =, \=, <, >, <= and >=

REXX

string1 op string2, where op can be any of =, /=, <, >, <= and >=

Ada

string1 op string2, where op can be any of ==, /=, <, >, =< and >=

Erlang

string1 op string2, where op can be any of ==, /=, <, >, <= and >=

Haskell

string1 op string2, where op can be any of eq, ne, lt, gt, le and ge

Perl

string1 op string2, where op can be any of ==, !=, <, >, <= and >=

C++ (std::string only), C#, D, Go, JavaScript, Python, PHP, Ruby

string1 op string2, where op can be any of -eq, -ceq, -ne, -cne, -lt, -clt, -gt, -cgt, -le, -cle, -ge, and -cge (operators starting with 'c' are case-sensitive)

Windows PowerShell

string1 op string2, where op can be any of ==, ~=, <, >, <= and >=

Lua

string1 op string2, where op can be any of ==, /=, <, >, <= and >=; Also: .EQ., .NE., .LT., .LE., .GT. and .GE.

Fortran

% Example in Erlang"hello" > "world". % returns false# Example in Windows PowerShell"hello" -gt "world" # returns false;; Example in common lisp(string> "art" "painting") ; returns nil(string< "art" "painting") ; returns non nil

[edit] Concatenation

Page 7: Comparison of Programming Languages

Main article: ConcatenationDefinition concatenate(string1,string2) returns string.

DescriptionConcatenates (joins) two strings to each other, returning the combined string. Note that some languages like C have mutable strings, so really the second string is being appended to the first string and the mutated string is returned.

Format Languagesstring1 & string2 Ada, VB, VB .NET

strcat(string1, string2)C, C++ (char * only; modifies string1, which must have enough space to store the result)

string1 . string2 Perl, PHP

string1 + string2ALGOL 68, C++ (std::string only), C#, Go, Pascal, Object Pascal (Delphi), Java, JavaScript, Windows PowerShell, Python, Ruby, F#, Turing

string1 ~ string2 D(string-append string1 string2) Scheme(concatenate 'string string1 string2) Common Lispstring1 || string2 REXX, SQLstring1 // string2 Fortranstring1 ++ string2 Erlang, Haskellstring1 ^ string2 OCaml, Standard ML, F#[string1 stringByAppendingString:string2]

Objective-C (NSString * only)

string1 .. string2 Lua// Example in C#"abc" + "def"; // returns "abcdef"' Example in Visual Basic"abc" & "def" ' returns "abcdef"// Example in D"abc" ~ "def"; // returns "abcdef";; Example in common lisp(concatenate 'string "abc " "def " "ghi") ; returns "abc def ghi"

[edit] Contains

Definition contains(string,substring) returns boolean

Description

Returns whether string contains substring as a substring. This is equivalent to using #Find and then detecting that it does not result in the failure condition listed in the third column of the #Find section. However, some languages have a simpler way of expressing this test.

RelatedFormat Languages

string_in_string(string, loc int, substring) ALGOL 68ContainsStr(string, substring) Delphistring.Contains(substring) C#, VB .NET, Windows PowerShell, F#string.contains(substring) Java (1.5+)

Page 8: Comparison of Programming Languages

string.indexOf(substring) >= 0 JavaScriptsubstring in string Python (2.3+)string.include?(substring) RubyData.List.isInfixOf substring string Haskell (GHC 6.6+)¢ Example in ALGOL 68 ¢string in string("e", loc int, "Hello mate"); ¢ returns true ¢string in string("z", loc int, "word"); ¢ returns false ¢// Example In C#"Hello mate".Contains("e"); // returns true"word".Contains("z"); // returns false# Example in Python"e" in "Hello mate" # returns true"z" in "word" # returns false

[edit] Equality

Tests if two strings are equal. See also #Compare and #Compare. Note that doing equality checks via. a generic Compare with integer result is not only confusing for the programmer but is often a significantly more expensive operation, this is especially true when using "C-strings".

Format Languages

string1 == string2Python, C++(std::string only), C# Go, JavaScript, PHP, Ruby, Erlang, Haskell, Lua, D

string1 == string2 orstring1 .EQ. string2

Fortran

strcmp(string1, string2) == 0 C, C++ (char * only)(string=? string1 string2) Scheme(string= string1 string2) Common Lisp

string1 = string2ALGOL 68, Ada, Object Pascal (Delphi), OCaml, Pascal, REXX, Standard ML, VB, VB .NET, F#

test string1 = string2, or[ string1 = string2 ]

Bourne Shell

string1 eq string2 Perlstring1.equals(string2) Javastring1 -eq string2, or[string]::Equals(string1, string2)

Windows PowerShell

[string1 isEqualToString:string2], or[string1 isEqual:string2]

Objective-C (NSString * only)

// Example in C#"hello" == "world" // returns false' Example in Visual Basic"hello" = "world" ' returns false# Example in Windows PowerShell"hello" -eq "world" # returns false

Page 9: Comparison of Programming Languages

[edit] Find

Definition find(string,substring) returns integer

Description

Returns the position of the start of the first occurrence of substring in string. If the substring is not found most of these routines return an invalid index value – -1 where indexes are 0-based, 0 where they are 1-based – or some value to be interpreted as Boolean FALSE.

Related instrrevFormat Languages If not found

string in string(substring, pos, string[startpos:]) ALGOL 68returns BOOL: TRUE or FALSE, and position in REF INT pos.

InStr(«startpos,»string,substring)VB (positions start at 1)

returns 0

index(string,substring) AWK returns 0index(string,substring«,startpos») Perl returns -1strpos(string,substring«,startpos») PHP returns FALSElocate(string, substring) Ingres returns string length + 1

strstr(string, substring)C, C++ (char * only, returns pointer to first character)

returns NULL

std.string.find(string, substring) D returns -1strings.Index(string, substring) Go returns -1

pos(substring, string)Pascal, Object Pascal (Delphi)

returns 0

pos(substring, string«,startpos») REXX returns 0

string.find(substring«,startpos»)C++ (std::string only)

returns std::string::npos

string.find(substring«,startpos«,endpos»»)Python

returns -1string.index(substring«,startpos«,endpos»») raises ValueErrorstring.index(substring«,startpos») Ruby returns nilstring.indexOf(substring«,startpos») Java, JavaScript returns -1

string.IndexOf(substring«,startpos«, charcount»»)

VB .NET, C#, Windows PowerShell, F#

returns -1

string:str(string, substring) Erlang returns 0(string-contains string substring) Scheme (SRFI 13) returns #f(search substring string) Common Lisp returns NILList.findIndex (List.isPrefixOf substring) (List.tails string)

Haskell (returns Just index)

returns Nothing

Str.search_forward (Str.regexp_string substring) string 0

OCaml raises Not_found

Substring.size (#1 (Substring.position substring Standard ML returns string length

Page 10: Comparison of Programming Languages

(Substring.full string)))

[string rangeOfString:substring].locationObjective-C (NSString * only)

returns NSNotFound

string.find(string, substring)(string):find(substring)

Lua returns nil

startpos = INDEX(string, substring «,back» «, kind»)

Fortran

returns 0 if substring is not in string; returns LEN(string)+1 if substring is empty

POSITION(substring IN string) SQLreturns 0 (positions start at 1)

; Examples in Common Lisp(search "e" "Hello mate") ; returns 1(search "z" "word") ; returns NIL// Examples in C#"Hello mate".IndexOf("e"); // returns 1"Hello mate".IndexOf("e", 4); // returns 9"word".IndexOf("z"); // returns -1; Examples in Scheme(use-modules (srfi srfi-13))(string-contains "Hello mate" "e") ; returns 1(string-contains "word" "z") ; returns #f' Examples in Visual BasicInStr("Hello mate", "e") ' returns 2InStr(5, "Hello mate", "e") ' returns 10InStr("word", "z") ' returns 0

[edit] Find character

Definition find character(string,char) returns integer

Description

Returns the position of the start of the first occurrence of the character char in string. If the character is not found most of these routines return an invalid index value – -1 where indexes are 0-based, 0 where they are 1-based – or some value to be interpreted as Boolean FALSE. This can be accomplished as a special case of #Find, with a string of one character; but it may be simpler or more efficient in many languages to locate just a single character. Also, in many languages, characters and strings are different types, so it is convenient to have such a function.

Related findFormat Languages If not found

char in string(char, pos, string[startpos:])

ALGOL 68returns BOOL: TRUE or FALSE, and position in REF INT pos.

strchr(string,char)C, C++ (char * only, returns pointer to character)

returns NULL

std.string.find(string, dchar) D returns -1string.find(char«,startpos») C++ (std::string only) returns std::string::npos

Page 11: Comparison of Programming Languages

string.indexOf(char«,startpos») Java returns -1string.IndexOf(char«,startpos«, charcount»»)

VB .NET, C#, Windows PowerShell, F#

returns -1

(position char string) Common Lisp returns NIL

List.elemIndex char stringHaskell (returns Just index)

returns Nothing

String.index string char OCaml raises Not_foundposition = SCAN (string, set «, back» «, kind») orposition = VERIFY (string, set «, back» «, kind»)[a]

Fortran returns zero

// Examples in C#"Hello mate".IndexOf('e'); // returns 1"word".IndexOf('z') // returns -1; Examples in Common Lisp(position #\e "Hello mate") ; returns 1(position #\z "word") ; returns NIL

^a Given a set of characters, SCAN returns the position of the first character found[1], while VERIFY returns the position of the first character that does not belong to the set [2].

[edit] Format

Definition format(formatstring, items) returns string

DescriptionReturns the formatted string representation of one or more items. See sprintf for more information.

Format Languagesassociate(file, string); putf(file, $formatstring$, items)

ALGOL 68

Format(item, formatstring) VBsprintf(formatstring, items) Perl, PHP, Rubyio_lib:format(formatstring, items) Erlangsprintf(outputstring, formatstring, items) C, C++ (char * only)std.string.format(formatstring, items) DFormat(formatstring, items) Delphifmt.Sprintf(formatstring, items) Goprintf -v outputstring formatstring items Unixformatstring % (items) Python, Ruby

formatstring.format(items)Python 3.x (format specification is different from printf)

Printf.sprintf formatstring items OCaml, F#Text.Printf.printf formatstring items Haskell (GHC)String.format(formatstring, items) JavaString.Format(formatstring, items) VB .NET, C#, F#(format formatstring items) Scheme (SRFI 28)

Page 12: Comparison of Programming Languages

(format nil formatstring items) Common Lispformatstring -f items Windows PowerShell[NSString stringWithFormat:formatstring, items] Objective-C (NSString * only)string.format(formatstring, items)(formatstring):format(items)

Lua

WRITE (outputstring, formatstring) items Fortran// Example in C#String.Format("My {0} costs {1:C2}", "pen", 19.99); // returns "My pen costs $19.99"// Example in DelphiFormat('My %s costs $%2f', ['pen', 19.99]); // returns "My pen costs $19.99"// Example in JavaString.format("My %s costs $%2f", "pen", 19.99); // returns "My pen costs $19.99"# Example in Python"My %s costs $%2f" % ("pen", 19.99); # returns "My pen costs $19.99""My {0} costs ${1:2f}".format("pen", 19.99); # returns "My pen costs $19.99"; Example in Scheme(format "My ~a costs $~1,2F" "pen" 19.99) ; returns "My pen costs $19.99"

[edit] Inequality

Tests if two strings are not equal. See also #Equality.

Format Languagesstring1 ne string2, or string1 NE string2

ALGOL 68 - note: the operator "ne" is literally in bold type-font.

string1 /= string2 ALGOL 68, Ada, Erlang, Fortran, Haskell

string1 <> string2VB, VB .NET, Pascal, Object Pascal (Delphi), OCaml, Standard ML, F#

string1 ne string2 Perl(string<> string1 string2) Scheme (SRFI 13)(string/= string1 string2) Common Lisp

string1 != string2C++ (std::string only), C#, Go, JavaScript, Python, Ruby, D

string1 \= string2 REXXtest string1 != string2, or[ string1 != string2 ]

Bourne Shell

string1 -ne string2, or-not [string]::Equals(string1, string2)

Windows PowerShell

string1 ~= string2 Lua// Example in C#"hello" != "world" // returns true' Example in Visual Basic

Page 13: Comparison of Programming Languages

"hello" <> "world" ' returns true# Example in Windows PowerShell"hello" -ne "world" # returns true

[edit] index

see #Find

[edit] indexof

see #Find

[edit] instr

see #Find

[edit] instrrev

see #rfind

[edit] join

Definition join(separator, list_of_strings) joins a list of strings with a separator

DescriptionJoins the list of strings into a new string, with the separator string between each of the substrings. Opposite of split.

Related sprintfFormat Languages

std.string.join(array_of_strings, separator) Dstring:join(list_of_strings, separator) Erlang (programming language)join(separator, list_of_strings) Perl, PHPimplode(separator, array_of_strings) PHPseparator.join(sequence_of_strings) Pythonarray_of_strings.join(separator) Ruby, JavaScript(string-join array_of_strings separator) Scheme (SRFI 13)(format nil "~{~a~^separator~}" array_of_strings) Common Lispstrings.Join(array_of_strings, separator) GoString.concat separator list_of_strings OCamlString.concatWith separator list_of_strings Standard MLData.List.intercalate separator list_of_strings Haskell (GHC 6.8+)Join(array_of_strings, separator) VBString.Join(separator, array_of_strings) VB .NET, C#, F#&{$OFS=$separator; "$array_of_strings"}, orarray_of_strings -join separator

Windows PowerShell

[array_of_strings componentsJoinedByString:separator] Objective-C (NSString * only)

Page 14: Comparison of Programming Languages

table.concat(table_of_strings, separator) Lua// Example in C#String.Join("-", {"a", "b", "c"}) // "a-b-c"# Example in Perljoin( '-', ('a', 'b', 'c')); # 'a-b-c'# Example in Python"-".join(["a", "b", "c"]) # 'a-b-c'# Example in Ruby["a", "b", "c"].join("-") # 'a-b-c'; Example in Scheme(use-modules (srfi srfi-13))(string-join '("a" "b" "c") "-") ; "a-b-c"

[edit] lastindexof

see #rfind

[edit] left

Definition left(string,n) returns string

DescriptionReturns the left n part of a string. If n is greater than the length of the string then most implementations return the whole string (exceptions exist - see code examples).

Format Languagesstring (string'First .. string'First + n - 1)

Ada

string:substr(string, start, length)

Erlang

Left(string,n) VBleft(string,n) Ingresleft(string,n «,padchar») REXX, Erlangsubstr(string, 0, n) AWK (changes string), Perl, PHPstring[:n] Pythonstring[0, n]string[0..n - 1]

Ruby

string.substr(0,n) C++ (std::string only)

string[0 .. n]D (if n is larger than the length of the string, then in Debug mode ArrayRangeException is thrown, in Release mode, the behaviour is unspecified)

string.Substring(0,n) VB .NET, C#, Windows PowerShell, F#leftstr(string, n) Pascal, Object Pascal (Delphi)string.substring(0,n) Java, JavaScript(string-take string n) Scheme (SRFI 13)take n string Haskell[string substringToIndex:n] Objective-C (NSString * only)String.extract (string, n, NONE)

Standard ML

Page 15: Comparison of Programming Languages

String.sub string 0 n OCaml (if n is larger than length of string, raises Invalid_argument)string.[..n] F#string.sub(string, 1, n)(string):sub(1, n)

Lua

string(:n) Fortran/* Examples in REXX */left("abcde", 3) /* returns "abc" */left("abcde", 8) /* returns "abcde " */left("abcde", 8, "*") /* returns "abcde***" */; Examples in Scheme(use-modules (srfi srfi-13))(string-take "abcde", 3) ; returns "abc" (string-take "abcde", 8) ; error' Examples in Visual BasicLeft("sandroguidi", 3) ' returns "san" Left("sandroguidi", 100) ' returns "sandroguidi"

[edit] len

see #length

[edit] length

Definition length(string) returns an integer number

DescriptionReturns the length of a string (not counting the null terminator or any other of the string's internal structural information). An empty string returns a length of 0.

Format Returns Languagesstring'Length AdaUPB string ALGOL 68

length(string)Perl, Ingres, Pascal, Object Pascal (Delphi), REXX, SQL

len(string) Python, Golength(string), string:len(string)

Erlang

Len(string) VB

string.LengthNumber of 16-bit UTF-16-encoded blocks

VB .NET, C#, Windows PowerShell, F#

string.size OR string.lengthNumber of bytes (Ruby lacks Unicode support)

Ruby

strlen(string) Number of bytes C, C++ (char * only), PHPstring.length() C++ (std::string only)string.length D

string.length()Number of 16-bit UTF-16-encoded blocks

Java

Page 16: Comparison of Programming Languages

string.length JavaScript(string-length string) Scheme(length string) Common LispString.length string OCamlsize string Standard ML

length stringNumber of Unicode codepoints

Haskell

[string length] Objective-C (NSString * only)string.len(string)(string):len()#string

Lua

LEN(string), or LEN_TRIM(string)

Fortran

// Examples in C#"hello".Length; // returns 5"".Length; // returns 0# Examples in Erlangstring:len("hello"). % returns 5string:len(""). % returns 0# Examples in Perllength("hello"); # returns 5length(""); # returns 0' Examples in Visual BasicLen("hello") ' returns 5Len("") ' returns 0//Examples in Objective c[@"hello" Length] //returns 5[@"" Length] //returns 0-- Examples in Lua("hello"):len() -- returns 5#"" -- returns 0

[edit] locate

see #Find

[edit] Lowercase

Definition lowercase(string) returns stringDescription Returns the string in lower case.

Format LanguagesLCase(string) VBlc(string) Perltolower(char) C (operates on a single character)std.string.tolower(string) Dtransform(string.begin(), string.end(), result.begin(), tolower)[3]

C++ (std::string only, result is stored in string result which is at least as long as string, and may or may not be

Page 17: Comparison of Programming Languages

string itself)lowercase(string) Delphistrtolower(string) PHPecho "string" | tr 'A-Z' 'a-z' Unixstring.lower() Python

string.downcaseRuby (only ASCII characters as Ruby lacks Unicode support)

strings.ToLower(string) Go(string-downcase string) Scheme (R6RS), Common LispString.lowercase string OCamlString.map Char.toLower string Standard MLmap Char.toLower string Haskellstring.toLowerCase() Java, JavaScriptto_lower(string) Erlangstring.ToLower() VB .NET, C#, Windows PowerShell, F#[string lowercaseString] Objective-C (NSString * only)string.lower(string)(string):lower()

Lua

LOWER(string) SQL// Example in C#"Wiki means fast?".ToLower(); // "wiki means fast?"; Example in Scheme(use-modules (srfi srfi-13))(string-downcase "Wiki means fast?") ; "wiki means fast?"/* Example in C */#include <ctype.h>#include <string.h>#include <stdio.h>int main(void) { char string[] = "Wiki means fast?"; int i; for (i = 0; i < sizeof(string); ++i) { /* transform characters in place, one by one */ string[i] = tolower(string[i]); } puts(string); /* "wiki means fast?" */ return 0;}

[edit] mid

see #substring

[edit] partition

Definition <string>.partition(separator) returns the sub-string before the separator; the

Page 18: Comparison of Programming Languages

separator; then the sub-string after the separator.

DescriptionSplits the given string by the separator and returns the three substrings that together make the original.

Format Languagesstring.partition(separator) Python, Ruby(1.9+)lists:partition(pred, string) Erlangsplit /(separator)/, string, 2 Perl# Examples in Python"Spam eggs spam spam and ham".partition('spam') # ('Spam eggs ', 'spam', ' spam and ham')"Spam eggs spam spam and ham".partition('X') # ('Spam eggs spam spam and ham', "", "")

[edit] replace

Definition replace(string, find, replace) returns stringDescription Returns a string with find occurrences changed to replace.

Format Languageschangestr(find, string, replace) REXXstd.string.replace(string, find, replace) DReplace(string, find, replace) VBstring.Replace(find, replace) VB .NET, C#, F#str_replace(find, replace, string) PHPre:replace(string, find, replace, «{return, list}») Erlangstring.replace(find, replace) Python, Java (1.5+)string.replaceAll(find_regex, replace)[4] Javastring.gsub(find, replace) Rubystring =~ s/find_regex/replace/g[4] Perlstring.replace(find, replace, "g") orstring.replace(/find_regex/g, replace)[4] JavaScript

echo "string" | sed 's/find_regex/replace/g'[4] Unixstring.replace(find, replace), orstring -replace find_regex, replace[4] Windows PowerShell

Str.global_replace (Str.regexp_string find) replace string OCaml[string stringByReplacingOccurrencesOfString:find withString:replace]

Objective-C (NSString * only)

string.gsub(string, find, replace)(string):gsub(find, replace)

Lua

string map {find replace} string Tcl// Examples in C#"effffff".Replace("f", "jump"); // returns "ejumpjumpjumpjumpjumpjump""blah".Replace("z", "y"); // returns "blah"// Examples in Java"effffff".replace("f", "jump"); // returns "ejumpjumpjumpjumpjumpjump""effffff".replaceAll("f*", "jump"); // returns "ejump"' Examples in Visual Basic

Page 19: Comparison of Programming Languages

Replace("effffff", "f", "jump") ' returns "ejumpjumpjumpjumpjumpjump"Replace("blah", "z", "y") ' returns "blah"# Examples in Windows PowerShell"effffff" -replace "f", "jump" # returns "ejumpjumpjumpjumpjumpjump""effffff" -replace "f*", "jump" # returns "ejump"

[edit] reverse

Definition reverse(string)Description Reverses the order of the characters in the string.

Format Languagesreverse string Perl, Haskelllists:reverse(string) Erlangstrrev(string) PHPstring[::-1] Python(string-reverse string) Scheme (SRFI 13)(reverse string) Common Lispstring.reverse Rubynew StringBuilder(string).reverse().toString() Javastd::reverse(string.begin(), string.end()); C++ (std::string only, modifies string)StrReverse(string) VBstring.Reverse().ToString() VB .NET, C#implode (rev (explode string)) Standard MLstring.split("").reverse().join("") JavaScriptstring.reverse(string)(string):reverse()

Lua

# Example in Perlreverse "hello" # returns "olleh"# Example in Python"hello"[::-1] # returns "olleh"; Example in Scheme(use-modules (srfi srfi-13))(string-reverse "hello") ; returns "olleh"

[edit] rfind

Definition rfind(string,substring) returns integer

Description

Returns the position of the start of the last occurrence of substring in string. If the substring is not found most of these routines return an invalid index value – -1 where indexes are 0-based, 0 where they are 1-based – or some value to be interpreted as Boolean FALSE.

Related instrFormat Languages If not found

InStrRev(«startpos,» string,substring) VB returns 0rindex(string,substring«,startpos») Perl returns -1strrpos(string,substring«,startpos») PHP returns FALSE

Page 20: Comparison of Programming Languages

string.rfind(substring«,startpos»)C++ (std::string only)

returns std::string::npos

std.string.rfind(string, substring) D returns -1string.rfind(substring«,startpos«, endpos»») Python returns -1string.rindex(substring«,startpos») Ruby returns nilstrings.LastIndex(string, substring) Go returns -1string.lastIndexOf(substring«,startpos») Java, JavaScript returns -1

string.LastIndexOf(substring«,startpos«, charcount»»)

VB .NET, C#, Windows PowerShell, F#

returns -1

(search substring string :from-end) Common Lisp returns NIL[string rangeOfString:substring options:NSBackwardsSearch].location

Objective-C (NSString * only)

returns NSNotFound

Str.search_backward (Str.regexp_string substring) string (Str.length string - 1)

OCaml raises Not_found

; Examples in Common Lisp(search "e" "Hello mate" :from-end) ; returns 9(search "z" "word" :from-end) ; returns NIL// Examples in C#"Hello mate".LastIndexOf("e"); // returns 9"Hello mate".LastIndexOf("e", 4); // returns 1"word".LastIndexOf("z"); // returns -1' Examples in Visual BasicInStrRev("Hello mate", "e") ' returns 10InStrRev(5, "Hello mate", "e") ' returns 2InStrRev("word", "z") ' returns 0

[edit] right

Definition right(string,n) returns string

DescriptionReturns the right n part of a string. If n is greater than the length of the string then most implementations return the whole string (exceptions exist - see code examples).

Format Languagesstring (string'Last - n + 1 .. string'Last)

Ada

Right(string,n) VBright(string,n) Ingresstring.substring(string.length()-n, string.length())

Java

string.substring(string.length-n, string.length)

JavaScript

right(string,n «,padchar») REXX, Erlangsubstr(string,-n) Perl, PHPstring[-n:] Python

Page 21: Comparison of Programming Languages

(string-take-right string n) Scheme (SRFI 13)string[-n..-1] Ruby

string[$-n .. $]D (if n is larger than length of string, then in Debug mode ArrayRangeException is thrown, and unspecified behaviour in Release mode)

String.sub string (String.length string - n) n

OCaml (if n is larger than length of string, raises Invalid_argument)

string.sub(string, -n)(string):sub(-n)

Lua

/* Examples in REXX */right("abcde", 3) /* returns "cde" */right("abcde", 8) /* returns " abcde" */right("abcde", 8, "*") /* returns "***abcde" */; Examples in Scheme(use-modules (srfi srfi-13))(string-take-right "abcde", 3) ; returns "cde" (string-take-right "abcde", 8) ; error' Examples in Visual BasicRight("sandroguidi", 3) ' returns "idi" Right("sandroguidi", 100) ' returns "sandroguidi"// Examples in Java; extract rightmost 4 charactersString str = "CarDoor";str.substring(str.length()-4, str.length()); // returns 'Door'

[edit] rpartition

Definition<string>.rpartition(separator) Searches for the separator from right-to-left within the string then returns the sub-string before the separator; the separator; then the sub-string after the separator.

DescriptionSplits the given string by the right-most separator and returns the three substrings that together make the original.

Format Languagesstring.rpartition(separator) Python, Ruby# Examples in Python"Spam eggs spam spam and ham".rpartition('spam') ### ('Spam eggs spam ', 'spam', ' and ham')"Spam eggs spam spam and ham".rpartition('X') ### ("", "", 'Spam eggs spam spam and ham')

[edit] slice

see #substring

[edit] split

Definition <string>.split(separator[, limit]) splits a string on separator, optionally only up to a

Page 22: Comparison of Programming Languages

limited number of substrings

Description

Splits the given string by occurrences of the separator (itself a string) and returns a list (or array) of the substrings. If limit is given, after limit - 1 separators have been read, the rest of the string is made into the last substring, regardless of whether it has any separators in it. The Scheme and Erlang implementations are similar but differ in several ways. Opposite of join.

Format Languagessplit(/separator/, string«, limit») Perlexplode(separator, string«, limit») PHPstring.split(separator«, limit»]) Javascript, Java, Python, Rubystring:tokens(string, sepchars) Erlangstrings.Split(string, separator, limit) Go(string-tokenize string« charset« start« end»»») Scheme (SRFI 13)Split(string, sepchars«, limit») VBstring.Split(sepchars«, limit«, options»») VB .NET, C#, F#string -split separator«, limit«, options»» Windows PowerShellStr.split (Str.regexp_string separator) string OCamlstd.string.split(string, separator) D[string componentsSeparatedByString:separator] Objective-C (NSString * only)// Example in C#"abc,defgh,ijk".Split(','); // {"abc", "defgh", "ijk"}"abc,defgh;ijk".Split(',', ';'); // {"abc", "defgh", "ijk"}% Example in Erlangstring:tokens("abc;defgh;ijk", ";"). % ["abc", "defgh", "ijk"]// Examples in Java"abc,defgh,ijk".split(','); // {"abc", "defgh", "ijk"}"abc,defgh;ijk".split(',|;'); // {"abc", "defgh", "ijk"}# Examples in Perlsplit(/spam/, 'Spam eggs spam spam and ham'); # ('Spam eggs ', ' ', ' and ham')split(/X/, 'Spam eggs spam spam and ham'); # ('Spam eggs spam spam and ham')

[edit] sprintf

see #Format

[edit] strip

see #trim

[edit] strcmp

see #Compare (integer result)

Page 23: Comparison of Programming Languages

[edit] substring

Definitionsubstring(string, startpos, endpos) returns stringsubstr(string, startpos, numChars) returns string

Description

Returns a substring of string between starting at startpos and endpos, or starting at startpos of length numChars. The resulting string is truncated if there are fewer than numChars characters beyond the starting point. endpos represents the index after the last character in the substring.

Format Languagesstring[startpos:endpos] ALGOL 68 (changes base index)string (startpos .. endpos) Ada (changes base index)Mid(string, startpos, numChars) VB

substr(string, startpos, numChars)AWK (changes string), Perl1,3, PHP1,3

substr(string, startpos «,numChars, padChar») REXXstring[startpos:endpos] Python1,2, Gostring[startpos, numChars]string[startpos .. endpos-1]string[startpos ... endpos]

Ruby1,2

string.slice(startpos«, endpos») JavaScript1,2

string.substr(startpos«, numChars»)C++ (std::string only), JavaScript

string.Substring(startpos, numChars)VB .NET, C#, Windows PowerShell, F#

string.substring(startpos«, endpos») Java, JavaScriptcopy(string, startpos, numChars) Delphi(substring string startpos endpos) Scheme(subseq string startpos endpos) Common LispString.sub string startpos numChars Ocamlsubstring (string, startpos, numChars) Standard MLstring:sub_string(string, startpos, endpos)string:substr(string, startpos, numChars)

Erlang

char result[numChars+1] = "";strncat(result, string + startpos, numChars);

C

string[startpos .. endpos+1) Dtake numChars $ drop startpos string Haskell[string substringWithRange:NSMakeRange(startpos, numChars)]

Objective-C (NSString * only)

string.[startpos..endpos] F#string.sub(string, startpos, endpos)(string):sub(startpos, endpos)

Lua1,2

Page 24: Comparison of Programming Languages

string(startpos:endpos) FortranSUBSTRING(string FROM startpos «FOR numChars») SQL

1. In this language, startpos can be negative, which indicates to start that number of places before the end of the string.

2. In this language, endpos can be negative, which indicates to end that number of places before the end of the string.

3. In this language, numChars can be negative, which indicates to end that number of places before the end of the string.

// Examples in C#"abc".Substring(1, 1): // returns "b""abc".Substring(1, 2); // returns "bc""abc".Substring(1, 6); // error% Examples in Erlangstring:substr("abc", 2, 1). % returns "b"string:substr("abc", 2). % returns "bc"# Examples in Python"abc"[1:2] # returns "b""abc"[1:3] # returns "bc"/* Examples in REXX */substr("abc", 2, 1) /* returns "b" */substr("abc", 2) /* returns "bc" */substr("abc", 2, 6) /* returns "bc " */substr("abc", 2, 6, "*") /* returns "bc****" */

[edit] Uppercase

Definition uppercase(string) returns stringDescription Returns the string in upper case.

Format LanguagesUCase(string) VBtoupper(string) AWK (changes string)uc(string) Perltoupper(char) C (operates on a single character)std.string.toupper(string) D

transform(string.begin(), string.end(), result.begin(), toupper)[3]

C++ (std::string only, result is stored in string result which is at least as long as string, and may or may not be string itself)

uppercase(string) Delphistrtoupper(string) PHPecho "string" | tr 'a-z' 'A-Z' Unixtranslate(string) , or

UPPER variables , or

REXX

Page 25: Comparison of Programming Languages

PARSE UPPER VAR SrcVar DstVarstring.upper() Python

string.upcaseRuby (only ASCII characters as Ruby lacks Unicode support)

strings.ToUpper(string) Go(string-upcase string) Scheme, Common LispString.uppercase string OCamlString.map Char.toUpper string Standard MLmap Char.toUpper string Haskellstring.toUpperCase() Java, JavaScriptto_upper(string) Erlangstring.ToUpper() VB .NET, C#, Windows PowerShell, F#[string uppercaseString] Objective-C (NSString * only)string.upper(string)(string):upper()

Lua

UPPER(string) SQL// Example in C#"Wiki means fast?".ToUpper(); // "WIKI MEANS FAST?"/* Example in REXX */translate("Wiki means fast?") /* "WIKI MEANS FAST?" */ /* Example #2 */A='This is an example.'UPPER A /* "THIS IS AN EXAMPLE." */ /* Example #3 */A='upper using Translate Function.'Translate UPPER VAR A Z /* Z="UPPER USING TRANSLATE FUNCTION." */; Example in Scheme(use-modules (srfi srfi-13))(string-upcase "Wiki means fast?") ; "WIKI MEANS FAST?"' Example in Visual BasicUCase("Wiki means fast?") ' "WIKI MEANS FAST?"

[edit] trim

Main article: Trim (programming)

trim or strip is used to remove whitespace from the beginning, end, or both beginning and end, of a string.

[edit] Notes

1. ̂ http://fortranwiki.org/fortran/show/scan2. ̂ http://fortranwiki.org/fortran/show/verify

Page 26: Comparison of Programming Languages

3. ^ a b The transform, tolower, and toupper functions exist in the std:: namespace. You must include the <algorithm> header file for the transform function, and include the <cctype> header file for the tolower and toupper functions. In some compilers, a cast must be made to the tolower or toupper function in order to resolve a function overloading ambiguity; e.g. std::transform(string.begin(), string.end(), result.begin(), (int (*)(int))std::tolower);

4. ^ a b c d e The "find" string in this construct is interpreted as a regular expression. Certain characters have special meaning in regular expressions. If you want to find a string literally, you need to quote the special characters.

[edit] External links

Perl String Functions Python String Methods Scheme String Procedures Erlang String Functions .NET String Methods and Properties Ruby String Class PHP String functions java.lang.String members Online String Manipulation Tools Haskell Hierarchical Libraries std.string from Phobos (D standard library) Lua String Functions