Comparison of programming languages (string functions): Difference between revisions

Content deleted Content added
GreenC bot (talk | contribs)
m 1 archive template merged to {{webarchive}} (WAM)
m left: {{codett}}
 
(190 intermediate revisions by 58 users not shown)
Line 1:
{{Short description|none}}
{{redirect|String functions|string functions in formal language theory|String operations}}
{{Redirect|String functions|string functions in formal language theory|String operations}}
{{further|Comparison of programming languages}}
{{Further|Comparison of programming languages}}
<!--
NOTE TO CONTRIBUTORS:
##################################
Thanks to all who have submitted code samples from various programming languages. When adding code samples, *please* include no extraneous characters or symbols that are not part of a programming language, such as interactive command prompts. This can needlessly confuse general readers.
NOTE TO CONTRIBUTORS:
Thanks to all who have submitted code samples from various programming languages.
When adding code samples, *please* do not include extraneous characters or symbols
that are not part of a programming language, such as interactive command prompts.
This causes unneeded confusion for general readers.
 
All code samples should at least be able to compile without error, when copied and pasted directly cutinto a source code file.
and pasted into a source code file.
##################################
-->
{{ProgLangCompare}}
Line 24 ⟶ 19:
:e.g. <code>length("hello world")</code> 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 (programming)|len]](string)''. The below list of common functions aims to help limit this confusion.
 
==Common string functions (multi language reference)==
Line 35 ⟶ 30:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>charAt(string,integer)</code> returns character.
|-
Line 49 ⟶ 44:
|-
| <code>''string''[''i'']</code>
|[[ALGOL 68]], [[APL (programming language)|APL]], [[Julia (programming language)|Julia]], [[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[Seed7]]
|1
|-
| <code>''string''[''i'']</code>
|[[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Cobra (programming language)|Cobra]], [[D (programming language)|D]], [[FreeBASIC]], [[Go (programming language)|Go]], [[Python (programming language)|Python]],<ref name="at1"/> [[PHP]], [[Ruby (programming language)|Ruby]],<ref name="at1"/> [[Windows PowerShell]], [[JavaScript]], Ya[[APL (programming language)|APL]]
|0
|-
Line 65 ⟶ 60:
|-
| <code>Mid(''string'',i,1)</code>
|[[Visual Basic (classic)|VB]]
|1
|-
Line 87 ⟶ 82:
|[[OCaml]], [[F Sharp (programming language)|F#]]
|0
|-
| <code>''string''.chars().nth(''i'')</code>
|[[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/std/primitive.str.html#method.chars <code>str::chars</code>] method iterates over code points and the [https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.nth <code>std::iter::Iterator::nth</code>] method on iterators returns the zero-indexed nth value from the iterator, or [[option type|<code>None</code>]].</ref>
|0
|-
| <code>''string''[''i'',''1'']</code>
|[[Pick Basic]]
|1
|-
| <code>String.sub (''string'', ''i'')</code>
Line 93 ⟶ 96:
|-
| <code>''string'' !! ''i''</code>
|[[Haskell (programming language)|Haskell]]
|0
|-
Line 113 ⟶ 116:
|-
| <code>substr(''string'', ''i'', 1)</code>
|[[Perl]] 5<ref name="at1"/>
|0
|-
| <code>substr(''string'', ''i'', 1)</code><br><code>string.substr(''i'', 1)</code>
|[[Raku (programming language)|Raku]]<ref name="at2"/>
|0
|-
Line 132 ⟶ 139:
|0
|-
| <code>string.sub(''string'', ''i'', ''i'') <br /code><br><code> (''string''):sub(''i'', ''i'')</code>
|[[Lua (programming language)|Lua]]<ref name="at1"/>
|1
Line 155 ⟶ 162:
| [[COBOL]]
|1
|-
| <code>${''string_param'':''i'':1}</code>
| [[Bash (Unix shell)|Bash]]
|0
|-
| <code>''i''⌷''string''</code>
| [[APL (programming language)|APL]]
|0 or 1
|}
 
<sourcesyntaxhighlight lang="pascal">
{ Example in Pascal }
var
MyStr: string = 'Hello, World';
MyChar: Char;
begin
MyChar := MyStr[2]; // 'e'
</syntaxhighlight>
</source>
 
<pre>
<source lang="algol68">
# Example in ALGOL 68 #
"Hello, World"[2]; // 'e'
</sourcepre>
 
<sourcesyntaxhighlight lang="csharpc">
// Example in C# and Ya
"Hello,#include <stdio.h> World"[2]; // 'l'for printf
char MyStr[] = "Hello, World";
</source>
printf("%c", *(MyStr+1)); // 'e'
printf("%c", *(MyStr+7)); // 'W'
printf("%c", MyStr[11]); // 'd'
printf("%s", MyStr); // 'Hello, World'
printf("%s", "Hello(2), World(2)"); // 'Hello(2), World(2)'
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="pythonc++">
// Example in C++
#include <iostream> // for "cout"
#include <string.h> // for "string" data type
using namespace std;
char MyStr1[] = "Hello(1), World(1)";
string MyStr2 = "Hello(2), World(2)";
cout << "Hello(3), World(3)"; // 'Hello(3), World(3)'
cout << MyStr2[6]; // '2'
cout << MyStr1.substr (5, 3); // '(1)'
</syntaxhighlight>
 
<syntaxhighlight lang="csharp">
// Example in C#
"Hello, World"[2]; // 'l'
</syntaxhighlight>
 
<syntaxhighlight lang="perl">
# Example in Perl 5
substr("Hello, World", 1, 1); # 'e'
</syntaxhighlight>
 
<syntaxhighlight lang="python">
# Examples in Python
"Hello, World"[2] # 'l'
"Hello, World"[-3] # 'r'
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"Hello, World".substr(1, 1); # 'e'
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Example in Visual Basic
Mid("Hello, World",2,1)
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbnet">
' Example in Visual Basic .NET
"Hello, World".Chars(2) ' "l"c
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="smalltalk">
" Example in Smalltalk "
'Hello, World' at: 2. "$e"
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="rust">
//Example in Rust
"Hello, World".chars().nth(2); // Some('l')
</syntaxhighlight>
<!-- endsection -->
 
Line 201 ⟶ 254:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>compare(string<sub>1</sub>,string<sub>2</sub>)</code> returns integer.
|-
Line 209 ⟶ 262:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>IF ''string<sub>1</sub>''<''string<sub>2</sub>'' THEN -1 ELSE ABS (''string<sub>1</sub>''>''string<sub>2</sub>'') FI</code>
Line 227 ⟶ 280:
|-
| <code>StrComp(''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
|[[Visual Basic (classic)|VB]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
| <code>''string<sub>1</sub>'' cmp ''string<sub>2</sub>''</code>
|[[Perl]], [[Raku (programming language)|Raku]]
|[[Perl]]
|-
| <code>''string<sub>1</sub>'' compare: ''string<sub>2</sub>''</code>
Line 236 ⟶ 289:
|-
| <code>''string<sub>1</sub>'' <=> ''string<sub>2</sub>''</code>
|[[Ruby (programming language)|Ruby]], [[C++]] (STL, [[C++20]])<ref>In C++, the overloaded [https://en.cppreference.com/w/cpp/language/operator_comparison#Three-way%20comparison <code>operator<=></code>] method on a [https://en.cppreference.com/w/cpp/string/basic_string string] returns a [https://en.cppreference.com/w/cpp/utility/compare/strong_ordering <code>std::strong_ordering</code>] object (otherwise <code>std::weak_ordering</code>): <code>less</code>, <code>equal</code> (same as <code>equivalent</code>), or <code>greater</code>.</ref>
|[[Ruby (programming language)|Ruby]]
|-
| <code>''string<sub>1</sub>''.compare(''string<sub>2</sub>'')</code>
Line 245 ⟶ 298:
|-
| <code>CompareStr(''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
|[[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
| <code>''string<sub>1</sub>''.compareTo(''string<sub>2</sub>'')</code>
Line 269 ⟶ 322:
|-
| <code>String.compare (''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
|[[Standard ML]] <ref>returns LESS, EQUAL, or GREATER</ref>
|-
| <code>compare ''string<sub>1</sub>'' ''string<sub>2</sub>''</code>
|[[Haskell (programming language)|Haskell]] <ref>returns LT, EQ, or GT</ref>
|-
| <code>[string]::Compare(''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
Line 280 ⟶ 333:
|[[Objective-C]] (<code>NSString *</code> only)
|-
| <code>LLT(''string<sub>1</sub>'',''string<sub>2</sub>'') <br/code><br><code> LLE(''string<sub>1</sub>'',''string<sub>2</sub>'') <br/code><br><code> LGT(''string<sub>1</sub>'',''string<sub>2</sub>'') <br/code><br><code> LGE(''string<sub>1</sub>'',''string<sub>2</sub>'') </code>
|[[Fortran]] <ref>returns <code>.TRUE.</code> or <code>.FALSE.</code>. These functions are based on the ASCII collating sequence.</ref>
|-
| <code>''string<sub>1</sub>''.localeCompare(''string<sub>2</sub>'')</code>
Line 289 ⟶ 342:
|[[Go (programming language)|Go]]
|-
| <code>string compare ?-nocase? ?-length int? ''string<sub>1</sub>'' ''string<sub>2</sub>''</code>
|[[Tcl]]
|-
| <code>compare(''string<sub>1</sub>'',''string<sub>2</sub>'',''count'')</code>
|[[PL/I]]<ref name="lower1">IBM extension.</ref>
|} -
| <code>''string<sub>1</sub>''.cmp(''string<sub>2</sub>'')</code>
<source lang="python">
| [[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/std/cmp/trait.Ord.html#tymethod.cmp <code>Ord::cmp</code>] method on a [https://doc.rust-lang.org/std/primitive.str.html#impl-Ord string] returns an [https://doc.rust-lang.org/std/cmp/enum.Ordering.html <code>Ordering</code>]: <code>Less</code>, <code>Equal</code>, or <code>Greater</code>.</ref>
|}
 
<syntaxhighlight lang="perl">
# Example in Perl 5
"hello" cmp "world"; # returns -1
</syntaxhighlight>
 
<syntaxhighlight lang="python">
# Example in Python
cmp("hello", "world") # returns -1
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="rexxperl6">
/**# ExampleExamples in Rexx */ Raku
"hello" cmp "world"; # returns Less
"world" cmp "hello"; # returns More
"hello" cmp "hello"; # returns Same
</syntaxhighlight>
 
<syntaxhighlight lang="rexx">
/** Example in Rexx */
compare("hello", "world") /* returns index of mismatch: 1 */
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Example in Scheme
(use-modules (srfi srfi-13))
; returns index of mismatch: 0
(string-compare "hello" "world" values values values)
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 316 ⟶ 385:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>string<sub>1</sub> OP string<sub>2</sub></code> OR <code>(compare string<sub>1</sub> string<sub>2</sub>)</code> returns Boolean.
|-
Line 324 ⟶ 393:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1= =, <>, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[OCaml]], [[Seed7]], [[Standard ML]], [[BASIC]], [[Visual Basic (classic)|VB]], [[Visual Basic .NET|VB .NET]], [[F Sharp (programming language)|F#]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1= =, /=, ≠, <, >, <=, ≤</code>}} and <code>{{mono|1=</code>}}; Also: <code>{{mono|1=EQ, NE, LT, LE, GE</code>}} and <code>{{mono|1=GT</code>}}
|[[ALGOL 68]]
|-
| <code>(stringOP? ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>, where <code>OP</code> can be any of <code>{{mono|1==, -ci=, <, -ci<, >, -ci>, <=, -ci<=, >=</code>}} and <code>{{mono|1=-ci>=</code>}} (operators starting with '<code>-ci</code>' are case-insensitive)
|[[Scheme (programming language)|Scheme]]
|-
| <code>(stringOP ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>, where <code>OP</code> can be any of <code>{{mono|1==, -ci=, <>, -ci<>, <, -ci<, >, -ci>, <=, -ci<=, >=</code>}} and <code>{{mono|1=-ci>=</code>}} (operators starting with '<code>{{mono|1=-ci</code>}}' are case-insensitive)
|[[Scheme (programming language)|Scheme]] (SRFI 13)
|-
| <code>(stringOP ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>, where <code>OP</code> can be any of <code>{{mono|1==, -equal, /=, -not-equal, <, -lessp, >, -greaterp, <=, -not-greaterp, >=</code>}} and <code>{{mono|1=-not-lessp</code>}} (the verbal operators are case-insensitive)
|[[Common Lisp]]
|-
| <code>(stringOP ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>, where <code>OP</code> can be any of <code>{{mono|1==, /=, <, >, <=,</code>}} and <code>{{mono|1=>=</code>}}
|[[ISLISP]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1= =, \=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Rexx]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1= =, ¬=, <, >, <=, >=, ¬<</code>}} and <code>{{mono|1=¬></code>}}
|[[PL/I]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1==, /=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Ada (programming language)|Ada]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1===, /=, <, >, =<</code>}} and <code>{{mono|1=>=</code>}}
|[[Erlang (programming language)|Erlang]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1===, /=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Haskell (programming language)|Haskell]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1=''eq'', ''ne'', ''lt'', ''gt'', ''le''</code>}} and <code>{{mono|1=''ge''</code>}}
|[[Perl]], [[Raku (programming language)|Raku]]
|[[Perl]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1===, !=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[C++]] (STL), [[C Sharp (programming language)|C#]], [[D (programming language)|D]], [[Go (programming language)|Go]], [[JavaScript]], [[Python (programming language)|Python]], [[PHP]], [[Ruby (programming language)|Ruby]], [[SwiftRust (programming language)|SwiftRust]],<ref Yaname="Rust compare">In Rust, the operators {{mono|1===}} and {{mono|1=!=}} and the methods <code>eq</code>, <code>ne</code> are implemented by the [https://doc.rust-lang.org/std/primitive.str.html#impl-PartialEq%3Cstr%3E <code>PartialEq</code>] trait, and the operators {{mono|1=<}}, {{mono|1=>}}, {{mono|1=<=}}, {{mono|1=>=}} and the methods <code>lt</code>, <code>gt</code>, <code>le</code>, <code>ge</code> are implemented by the [https://doc.rust-lang.org/std/primitive.str.html#impl-PartialOrd%3Cstr%3E <code>PartialOrd</code>] trait.</ref> [[Swift (programming language)|Swift]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1=-eq, -ceq, -ne, -cne, -lt, -clt, -gt, -cgt, -le, -cle, -ge,</code>}} and <code>{{mono|1=-cge</code>}} (operators starting with '<code>{{mono|1=c</code>}}' are case-sensitive)
|[[Windows PowerShell]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1===, ~=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Lua (programming language)|Lua]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1==, ~=, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
|[[Smalltalk]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code>, where <code>OP</code> can be any of <code>{{mono|1===, /=, <, >, <=</code>}} and <code>{{mono|1=>=; Also: .EQ., .NE., .LT., .LE., .GT.</code>}} and <code>{{mono|1=.GE.</code>}}
|[[Fortran]].<ref>The operators use the compiler's default collating sequence.</ref>
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code> where <code>OP</code> can be any of <code>{{mono|1==, <>, <, >, <=, >=</code>}} as well as worded equivalents
| [[COBOL]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code> where <code>OP</code> can be any of <code>{{mono|1===, <>, <, >, <=</code>}} and <code>{{mono|1=>=</code>}}
| [[Cobra (programming language)|Cobra]]
|-
| <code>''string<sub>1</sub>'' OP ''string<sub>2</sub>''</code> is available in the syntax, but means comparison of the pointers pointing to the strings, not of the string contents. Use the Compare (integer result) function.
| [[C (programming language)|C]], [[Java (programming language)|Java]]
|-
| <code>''string<sub>1</sub>''.METHOD(''string<sub>2</sub>'')</code> where <code>METHOD</code> is any of <code>eq</code>, <code>ne</code>, <code>gt</code>, <code>lt</code>, <code>ge</code>, <code>le</code>
| [[Rust (programming language)|Rust]]<ref name="Rust compare" />
|}
 
<sourcesyntaxhighlight lang="erlang">
% Example in Erlang
"hello" > "world". % returns false
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"art" gt "painting"; # returns False
"art" lt "painting"; # returns True
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="powershell">
# Example in Windows PowerShell
"hello" -gt "world" # returns false
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="lisp">
;; Example in Common Lisp
(string> "art" "painting") ; returns nil
(string< "art" "painting") ; returns non nil
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 409 ⟶ 487:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>concatenate(string<sub>1</sub>,string<sub>2</sub>)</code> returns string.
|-
Line 418 ⟶ 496:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>''string<sub>1</sub>'' & ''string<sub>2</sub>''</code>
|[[Ada (programming language)|Ada]], [[FreeBASIC]], [[Seed7]], [[BASIC]], [[Visual Basic (classic)|VB]], [[Visual Basic .NET|VB .NET]], [[COBOL]] (between literals only)
|-
| <code> [[strcat]](''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
Line 430 ⟶ 508:
|-
| <code>''string<sub>1</sub>'' + ''string<sub>2</sub>''</code>
|[[ALGOL 68]], [[C++]] (STL), [[C Sharp (programming language)|C#]], [[Cobra (programming language)|Cobra]], [[FreeBASIC]], [[Go (programming language)|Go]], [[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[Java (programming language)|Java]], [[JavaScript]], [[Windows PowerShell]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Rust (programming language)|Rust]],<ref>In Rust, the <code>+</code> operator is implemented by the [https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-Add%3C%26%27_%20str%3E <code>Add</code>] trait.</ref> [[F Sharp (programming language)|F#]], [[Swift (programming language)|Swift]], [[Turing (programming language)|Turing]], [[Visual Basic (classic)|VB]], Ya
|-
| <code>''string<sub>1</sub>'' ~ ''string<sub>2</sub>''</code>
|[[D (programming language)|D]], [[Raku (programming language)|Raku]]
|-
| <code>(string-append ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>
Line 451 ⟶ 529:
|-
| <code>''string<sub>1</sub>'' ++ ''string<sub>2</sub>''</code>
|[[Erlang (programming language)|Erlang]], [[Haskell (programming language)|Haskell]]
|-
| <code>''string<sub>1</sub>'' ^ ''string<sub>2</sub>''</code>
Line 463 ⟶ 541:
|-
| <code>''string<sub>1</sub>'' , ''string<sub>2</sub>''</code>
|[[Smalltalk]], [[APL (programming language)|APL]]
|-
| <code>''string<sub>1</sub>'' ''string<sub>2</sub>''</code>
Line 469 ⟶ 547:
|-
| <code>''string<sub>1</sub>string<sub>2</sub>''</code>
|[[Bash (Unix shell)|Bash]]
|-
| <code>''string<sub>1</sub>'' <> ''string<sub>2</sub>''</code>
Line 478 ⟶ 556:
|}
 
<sourcesyntaxhighlight lang="pascal">
{ Example in Pascal }
'abc' + 'def'; // returns "abcdef"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"abc" + "def"; // returns "abcdef"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Example in Visual Basic
"abc" & "def" ' returns "abcdef"
Line 494 ⟶ 572:
"abc" & Null ' returns "abc"
"abc" + Null ' returns Null
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="d">
// Example in D
"abc" ~ "def"; // returns "abcdef"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="lisp">
;; Example in common lisp
(concatenate 'string "abc " "def " "ghi") ; returns "abc def ghi"
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl">
# Example in Perl 5
"abc" . "def"; # returns "abcdef"
"Perl " . 5; # returns "Perl 5"
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"abc" ~ "def"; # returns "abcdef"
"Perl " ~ 6; # returns "Perl 6"
</syntaxhighlight>
<!-- endsection -->
 
Line 511 ⟶ 601:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>contains(''string'',''substring'')</code> returns boolean
|-
Line 528 ⟶ 618:
|-
| <code>''ContainsStr''(''string'', ''substring'')</code>
| [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
| <code>strstr(''string'', ''substring'') != NULL</code>
| [[C (programming language)|C]], [[C++]] (<code>char *</code> only)
|-
| <code>''string''.Contains(''substring'')</code>
| [[C Sharp (programming language)|C#]], [[Visual Basic .NET|VB .NET]], [[Windows PowerShell]], [[F Sharp (programming language)|F#]]
|-
| <code>''string''.contains(''substring'')</code>
| [[Cobra (programming language)|Cobra]], [[Java (programming language)|Java]] (1.5+), [[Raku (programming language)|Raku]], [[Rust (programming language)|Rust]],<ref>See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.contains <code>str::contains</code>] method.</ref> [[C++]] ([[C++23]])<ref>See the [https://en.cppreference.com/w/cpp/string/basic_string/contains <code>std::basic_string::contains</code>] method.</ref>
| [[Cobra (programming language)|Cobra]], [[Java (programming language)|Java]] (1.5+)
|-
| <code>''string''.indexOf(''substring'') &gt;= 0</code>
Line 544 ⟶ 634:
| <code>strpos(''string'', ''substring'') !== false</code>
|[[PHP]]
|-
| <code>str_contains(''string'', ''substring'')</code>
|[[PHP]] (8+)
|-
| <code>pos(''string'', ''substring'') &lt;&gt; 0</code>
Line 558 ⟶ 651:
|-
| <code>Data.List.isInfixOf ''substring'' ''string''</code>
|[[Haskell (programming language)|Haskell]] (GHC 6.6+)
|-
| <code>''string'' includesSubstring: ''substring''</code>
Line 580 ⟶ 673:
| <code>index(''string'', ''substring'', ''startpos'')>0</code>
|[[Fortran, PL/I]]<ref name="contain1">''startpos'' is IBM extension.</ref>
|-
| <code>index(''string'', ''substring'', ''occurrence'')>0</code>
|[[Pick Basic]]
|-
| <code>strings.Contains(''string'', ''substring'')</code>
Line 592 ⟶ 688:
| <code>''string''.rangeOfString(''substring'') != nil</code>
|[[Swift (programming language)|Swift]] (Foundation)
|-
| <code>∨/''substring''⍷''string''</code>
|[[APL (programming language)|APL]]
|}
 
Line 598 ⟶ 697:
string in string("z", '''loc int''', "word"); ¢ returns '''false''' ¢
 
<sourcesyntaxhighlight lang="csharp">
// Example In C#
"Hello mate".Contains("e"); // returns true
"word".Contains("z"); // returns false
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="python">
# Example in Python
"e" in "Hello mate" # returns true
"z" in "word" # returns false
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"Good morning!".contains('z') # returns False
"¡Buenos días!".contains('í'); # returns True
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="smalltalk">
" Example in Smalltalk "
'Hello mate' includesSubstring: 'e' " returns true "
'word' includesSubstring: 'z' " returns false "
</syntaxhighlight>
</source>
 
===Equality===
Line 622 ⟶ 727:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>''string<sub>1</sub>'' == ''string<sub>2</sub>''</code>
|[[Python (programming language)|Python]], [[C++]] (STL), [[C Sharp (programming language)|C#]], [[Cobra (programming language)|Cobra]], [[Go (programming language)|Go]], [[JavaScript]] (similarity), [[PHP]] (similarity), [[Ruby (programming language)|Ruby]], [[ErlangRust (programming language)|ErlangRust]],<ref name="Rust compare" /> [[HaskellErlang (programming language)|Erlang]], [[Haskell]], [[Lua (programming language)|Lua]], [[D (programming language)|D]], [[Mathematica]], [[Swift (programming language)|Swift]], Ya
|-
| <code>''string<sub>1</sub>'' === ''string<sub>2</sub>''</code>
|[[JavaScript]], [[PHP]]
|-
| <code>''string<sub>1</sub>'' == ''string<sub>2</sub>'' or <br/code><br><code> ''string<sub>1</sub>'' .EQ. ''string<sub>2</sub>''</code>
|[[Fortran]]
|-
Line 643 ⟶ 748:
|-
| <code>''string<sub>1</sub>'' = ''string<sub>2</sub>''</code>
|[[ALGOL 68]], [[Ada (programming language)|Ada]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[OCaml]], [[Pascal (programming language)|Pascal]], [[Rexx]], [[Seed7]], [[Standard ML]], [[BASIC]], [[Visual Basic (classic)|VB]], [[Visual Basic .NET|VB .NET]], [[F Sharp (programming language)|F#]], [[Smalltalk]], [[PL/I]], [[COBOL]]
|-
| <code>test ''string<sub>1</sub>'' = ''string<sub>2</sub>'', or <br /code><br><code>[ ''string<sub>1</sub>'' = ''string<sub>2</sub>'' ]</code>
|[[Bourne Shell]]
|-
| <code>''string<sub>1</sub>'' eq ''string<sub>2</sub>''</code>
|[[Perl]], [[Raku (programming language)|Raku]], [[Tcl]]
|[[Perl]]
|-
| <code>''string<sub>1</sub>''.equals(''string<sub>2</sub>'')</code>
Line 657 ⟶ 762:
|[[C Sharp (programming language)|C#]]
|-
| <code>''string<sub>1</sub>'' -eq ''string<sub>2</sub>'', or <br /code><br><code>[string]::Equals(''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
|[[Windows PowerShell]]
|-
| <code>[''string<sub>1</sub>'' isEqualToString:''string<sub>2</sub>''], or <br /code><br><code>[''string<sub>1</sub>'' isEqual:''string<sub>2</sub>'']</code>
|[[Objective-C]] (<code>NSString *</code> only)
|-
| <code>''string<sub>1</sub>'' ≡ ''string<sub>2</sub>''</code>
|[[APL (programming language)|APL]]
|-
| <code>''string<sub>1</sub>''.eq(''string<sub>2</sub>'')</code>
|[[Rust (programming language)|Rust]]<ref name="Rust compare" />
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"hello" == "world" // returns false
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Example in Visual Basic
"hello" = "world" ' returns false
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="ps1perl">
# Examples in Perl 5
'hello' eq 'world' # returns 0
'hello' eq 'hello' # returns 1
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
'hello' eq 'world' # returns False
'hello' eq 'hello' # returns True
</syntaxhighlight>
 
<syntaxhighlight lang="ps1">
# Example in Windows PowerShell
"hello" -eq "world" # returns false
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="apl">
⍝ Example in APL
'hello' ≡ 'world' ⍝ returns 0
</syntaxhighlight>
 
<!-- endsection -->
 
Line 684 ⟶ 813:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>find(''string'',''substring'')</code> returns integer
|-
Line 690 ⟶ 819:
| 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
| instrrev
|}
Line 702 ⟶ 831:
|-
| <code>InStr(«''startpos'',»''string'',''substring'')</code>
|[[Visual Basic (classic)|VB]] (positions start at 1)
|returns 0
|-
Line 714 ⟶ 843:
|-
| <code>index(''string'',''substring''«,''startpos''»)</code>
|[[Perl]] 5
|returns −1
|-
| <code>index(''string'',''substring''«,''startpos''»)</code><br><code>''string''.index(''substring'',«,''startpos''»)</code>
|[[Raku (programming language)|Raku]]
|returns Nil
|-
| <code>instr(«''startpos'',»''string'',''substring'')</code>
Line 746 ⟶ 879:
|-
| <code>pos(''substring'', ''string'')</code>
|[[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|returns 0
|-
Line 793 ⟶ 926:
|-
| <code>List.findIndex (List.isPrefixOf ''substring'') (List.tails ''string'')</code>
|[[Haskell (programming language)|Haskell]] (returns Justonly ''index'')
|returns Nothing
|-
Line 808 ⟶ 941:
|returns NSNotFound
|-
| <code>string.find(''string'', ''substring'') <br /code><br><code> (''string''):find(''substring'')</code>
|[[Lua (programming language)|Lua]]
|returns nil
|-
| <code>''string'' indexOfSubCollection: ''substring'' startingAt: ''startpos'' ifAbsent: ''aBlock'' <br /code><br><code> ''string'' findString: ''substring'' startingAt: ''startpos'' </code>
|[[Smalltalk]] ([[Squeak]], [[Pharo]])
|evaluate aBlock which is a block closure (or any object understanding value) <br /> returns 0
|-
| <code>startpos = INDEX(''string'', ''substring'' «,''back''» «, ''kind''»)</code>
Line 825 ⟶ 958:
|-
| <code>index(''string'', ''substring'', ''startpos'' )</code>
|[[PL/I]]<ref name="contain1">''startpos'' is IBM extension.</ref>
|returns 0 (positions start at 1)
|-
| <code>index(''string'', ''substring'', ''occurrence'' )</code>
|[[Pick Basic]]
|returns 0 if occurrence of substring is not in string; (positions start at 1)
|-
| <code>''string''.indexOf(''substring''«,''startpos''«, ''charcount''»»)</code>
Line 832 ⟶ 969:
|returns −1
|-
| <code>string first ''substring string startpos''</code>
|[[Tcl]]
|returns −1
|-
| <code>(''substring''⍷''string'')⍳1</code>
|[[APL (programming language)|APL]]
|returns 1 + the last position in ''string''
|-
| <code>''string''.find(''substring'')</code>
|[[Rust (programming language)|Rust]]<ref name="Rust find">See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.find <code>str::find</code>] method.</ref>
|returns [[Option type|<code>None</code>]]
|}
 
'''Examples'''
<source lang="lisp">
; Examples in* Common Lisp
*: <syntaxhighlight lang="lisp">
(search "e" "Hello mate") ; returns 1
(search "z" "word") ; returns NIL
</syntaxhighlight>
</source>
* C#
 
*: <sourcesyntaxhighlight lang="csharp">
// Examples in C#
"Hello mate".IndexOf("e"); // returns 1
"Hello mate".IndexOf("e", 4); // returns 9
"word".IndexOf("z"); // returns -1
</syntaxhighlight>
</source>
* Raku
 
*: <sourcesyntaxhighlight lang="schemeraku">
"Hello, there!".index('e') # returns 1
; Examples in Scheme
"Hello, there!".index('z') # returns Nil
</syntaxhighlight>
* Scheme
*: <syntaxhighlight lang="scheme">
(use-modules (srfi srfi-13))
(string-contains "Hello mate" "e") ; returns 1
(string-contains "word" "z") ; returns #f
</syntaxhighlight>
</source>
* Visual Basic
 
*: <sourcesyntaxhighlight lang="vbvbnet">
' Examples in Visual Basic
InStr("Hello mate", "e") ' returns 2
InStr(5, "Hello mate", "e") ' returns 10
InStr("word", "z") ' returns 0
</syntaxhighlight>
</source>
* Smalltalk
 
*: <sourcesyntaxhighlight lang="smalltalk">
" Examples in Smalltalk "
'Hello mate' indexOfSubCollection:'ate' "returns 8"
</syntaxhighlight>
*: <syntaxhighlight lang="smalltalk">
'Hello mate' indexOfSubCollection:'late' "returns 0"
</syntaxhighlight>
I'Hello mate'
*: <syntaxhighlight lang="smalltalk">
I'Hello mate'
indexOfSubCollection:'late'
ifAbsent:[ 99 ] "returns 99"
</syntaxhighlight>
'Hello mate'
*: <syntaxhighlight lang="smalltalk">
'Hello mate'
indexOfSubCollection:'late'
ifAbsent:[ self error ] "raises an exception"
</syntaxhighlight>
</source>
 
<!-- endsection -->
Line 882 ⟶ 1,036:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>find_character(''string'',''char'')</code> returns integer
|-
Line 897 ⟶ 1,051:
| <code>char in string(char, pos, ''string[startpos:]'')</code>
|[[ALGOL 68]]
|returns {{mono|BOOL}}: {{mono|TRUE}} or {{mono|FALSE}}, and position in {{mono|REF INT pos}}.
|-
| <code>instr(''string'', any ''char''«,''startpos''»)</code> (char, can contain more them one char, in which case the position of the first appearance of any of them is returned.)
Line 905 ⟶ 1,059:
| <code>strchr(''string'',''char'')</code>
|[[C (programming language)|C]], [[C++]] (<code>[[character (computing)|char]] [[Pointer (computer programming)|*]]</code> only, returns pointer to character)
|returns {{mono|NULL}}
|-
| <code>std.string.find(''string'', ''dchar'')</code>
Line 913 ⟶ 1,067:
| <code>''string''.find(''char''«,''startpos''»)</code>
|[[C++]] (STL)
|returns {{mono|std::string::npos}}
|-
| <code>pos(''string'', ''char''«, ''startpos''»)</code>
Line 933 ⟶ 1,087:
| <code>(position ''char'' ''string'')</code>
|[[Common Lisp]]
|returns {{mono|NIL}}
|-
| <code>(char-index ''char'' ''string'')</code>
|[[ISLISP]]
|returns <code>{{mono|nil</code>}}
|-
| <code>List.elemIndex ''char'' ''string''</code>
|[[Haskell (programming language)|Haskell]] (returns <code>Just ''index''</code>)
|returns {{mono|Nothing}}
|-
| <code>String.index ''string'' ''char''</code>
|[[OCaml]]
|raises {{mono|Not_found}}
|-
| <code>position = SCAN (''string'', ''set'' «, ''back''» «, ''kind''») or <br/code><br><code> position = VERIFY (''string'', ''set'' «, ''back''» «, ''kind''»){{ref|Fortran find|[a]}}</code>
|[[Fortran]]
|returns zero
|-
| <code>''string'' indexOf: ''char'' ifAbsent: aBlock </code><br> <code>''string'' indexOf: ''char'' </code><br> <code>''string'' includes: ''char''</code>
|[[Smalltalk]]
|evaluate <code>aBlock</code> which is a <code>BlockClosure</code> (or any object understanding value) <br> returns 0 <br> returns <code>true</code> or <code>false</code>
|-
| <code>index(''string'', ''char'', ''startpos'' )</code>
Line 961 ⟶ 1,115:
|<code>''string''.index(?''char'')</code>
|[[Ruby (programming language)|Ruby]]
|returns {{mono|nil}}
|-
|<code>''strpos(''string'',''char'',''startpos'')</code>
|[[PHP]]
|returns <code>{{mono|false</code>}}
|-
| <code>''string''.indexOf(''char''«,''startpos''«, ''charcount''»»)</code>
|[[Cobra (programming language)|Cobra]]
|returns −1
|-
| <code>''string''⍳''char''</code>
|[[APL (programming language)|APL]]
|returns 1 + the last position in ''string''
|-
| <code>''string''.find(''substring'')</code>
|[[Rust (programming language)|Rust]]<ref name="Rust find" />
|returns [[Option type|{{mono|None}}]]
|}
 
<sourcesyntaxhighlight lang="csharp">
// Examples in C#
"Hello mate".IndexOf('e'); // returns 1
"word".IndexOf('z') // returns -1
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="lisp">
; Examples in Common Lisp
(position #\e "Hello mate") ; returns 1
(position #\z "word") ; returns NIL
</syntaxhighlight>
</source>
<!-- endsection -->
{{note|Fortran find|a}} Given a set of characters, SCAN returns the position of the first character found,<ref>{{cite web|url=http://fortranwiki.org/fortran/show/scan |title=scan in Fortran Wiki |publisher=Fortranwiki.org |date=2009-04-30 |accessdateaccess-date=2013-08-18}}</ref> while VERIFY returns the position of the first character that does not belong to the set.<ref>{{cite web|url=http://fortranwiki.org/fortran/show/verify |title=verify in Fortran Wiki |publisher=Fortranwiki.org |date=2012-05-03 |accessdateaccess-date=2013-08-18}}</ref>
 
===Format===
Line 991 ⟶ 1,153:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>format(''formatstring'', ''items'')</code> returns string
|-
Line 999 ⟶ 1,161:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !
! Languages !
! Format string syntax
|-
| <code>associate(''file'', ''string''); [[putf]](''file'', ''$formatstring$'', ''items'')</code>
Line 1,006 ⟶ 1,170:
|-
| <code>Format(''item'', ''formatstring'')</code>
|[[Visual Basic (classic)|VB]]
| <code></code>
|-
| <code>[[sprintf]](''formatstring'', ''items'')</code>
|[[Perl]], [[PHP]], [[Raku (programming language)|Raku]], [[Ruby (programming language)|Ruby]]
|[[C (programming language)|C]]
|C
|-
| <code>item.fmt(''formatstring'')</code>
|[[Raku (programming language)|Raku]]
|[[C (programming language)|C]]
|-
| <code>io_lib:format(''formatstring'', ''items'')</code>
Line 1,019 ⟶ 1,187:
| <code>[[sprintf]](''outputstring'', ''formatstring'', ''items'')</code>
|[[C (programming language)|C]]
|[[C (programming language)|C]]
|C
|-
| <code>std::format(''formatstring'', ''items'')</code>
| [[C++]] ([[C++20]])
|Python
|-
| <code>std.string.format(''formatstring'', ''items'')</code>
|[[D (programming language)|D]]
|[[C (programming language)|C]]
|C
|-
| <code>Format(''formatstring'', ''items'')</code>
|[[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
| <code></code>
|-
| <code>fmt.Sprintf(''formatstring'', ''items'')</code>
|[[Go (programming language)|Go]]
|[[C (programming language)|C]]
|C
|-
| <code>[[printf (Unix)|printf]] -v ''outputstring'' ''formatstring'' ''items''</code>
|[[Bash shellUnix]]
|[[C (programming language)|C]]
|C
|-
| <code>''formatstring'' % (''items'')</code>
|[[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]]
|[[C (programming language)|C]]
|C
|-
| <code>''formatstring''.format(''items'')</code>
|[[Python scripting language|Python]]
|[[.NET]]
|-
|<code>f''formatstring''</code>
|[[Python 3]]
|-
| <code>Printf.sprintf ''formatstring''</code><ref>''<code>formatstring</code>'' must be a fixed literal at compile time for it to have the correct type.</ref><code> ''items''</code>
| [[OCaml]], [[F Sharp (programming language)|F#]]
|[[C (programming language)|C]]
|C
|-
| <code>Text.Printf.printf ''formatstring'' ''items''</code>
|[[Haskell (programming language)|Haskell]] (GHC)
|[[C (programming language)|C]]
|C
|-
| <code>''formatstring'' printf: ''items''</code>
|[[Smalltalk]]
|[[C (programming language)|C]]
|C
|-
| <code>String.format(''formatstring'', ''items'')</code>
|[[Java (programming language)|Java]]
|[[C (programming language)|C]]
|C
|-
| <code>String.Format(''formatstring'', ''items'')</code>
|[[Visual Basic .NET|VB .NET]], [[C Sharp (programming language)|C#]], [[F Sharp (programming language)|F#]]
|[[.NET]]
|-
| <code>(format ''formatstring'' ''items'')</code>
Line 1,079 ⟶ 1,254:
| <code>''formatstring'' -f ''items''</code>
|[[Windows PowerShell]]
|[[.NET]]
|-
| <code>[NSString stringWithFormat:''formatstring'', ''items'']</code>
|[[Objective-C]] (<code>NSString *</code> only)
|[[C (programming language)|C]]
|C
|-
| <code>String(format:''formatstring'', ''items'')</code>
|[[Swift (programming language)|Swift]] (Foundation)
|[[C (programming language)|C]]
|C
|-
| <code>string.format(''formatstring'', ''items'') <br /code><br><code> (''formatstring''):format(''items'')</code>
|[[Lua (programming language)|Lua]]
|[[C (programming language)|C]]
|C
|-
| <code>WRITE (''outputstring'', ''formatstring'') ''items''</code>
Line 1,103 ⟶ 1,278:
| <code>String.format(''formatstring'', ''items'')</code>
|[[Cobra (programming language)|Cobra]]
|[[.NET]]
|-
| <code>format ''formatstring items''</code>
|[[Tcl]]
|[[C (programming language)|C]]
|C
|-
| <code>''formatnumbers'' ⍕ ''items''</code><br><code>''formatstring'' ⎕FMT ''items''</code>
|[[APL (programming language)|APL]]
|APL
|-
| <code>format!(''formatstring'', ''items'')</code>
| [[Rust (programming language)|Rust]]<ref>See [https://doc.rust-lang.org/stable/std/macro.format.html <code>std::format</code>], which is imported by the Rust [https://doc.rust-lang.org/stable/std/prelude/ prelude] so that it can be used under the name <code>format</code>.</ref>
| Python
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
String.Format("My {0} costs {1:C2}", "pen", 19.99); // returns "My pen costs $19.99"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="delphi">
// Example in Object Pascal (Delphi)
Format('My %s costs $%2f', ['pen', 19.99]); // returns "My pen costs $19.99"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="java5java">
// Example in Java
String.format("My %s costs $%2f", "pen", 19.99); // returns "My pen costs $19.99"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="pythonperl6">
# Examples in Raku
sprintf "My %s costs \$%.2f", "pen", 19.99; # returns "My pen costs $19.99"
1.fmt("%04d"); # returns "0001"
</syntaxhighlight>
 
<syntaxhighlight lang="python">
# 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"
</syntaxhighlight>
</source>
<syntaxhighlight lang="python3">
#Example in Python 3.6+
pen = "pen"
f"My {pen} costs {19.99}" #returns "My pen costs 19.99"
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="Schemescheme">
; Example in Scheme
(format "My ~a costs $~1,2F" "pen" 19.99) ; returns "My pen costs $19.99"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang=PLI"c">
/* example in PL/I */
put string(some_string) edit('My ', 'pen', ' costs', 19.99)(a,a,a,p'$$$V.99')
/* returns "My pen costs $19.99" */
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 1,148 ⟶ 1,342:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>''string<sub>1</sub>'' '''ne''' ''string<sub>2</sub>'', or </code><br><code>''string<sub>1</sub>'' NE ''string<sub>2</sub>''</code>
|[[ALGOL 68]] – note: the operator "'''ne'''" is literally in '''bold''' type-font.
|-
| <code>''string<sub>1</sub>'' /= ''string<sub>2</sub>''</code>
|[[ALGOL 68]], [[Ada (programming language)|Ada]], [[Erlang (programming language)|Erlang]], [[Fortran]], [[Haskell (programming language)|Haskell]]
|-
| <code>''string<sub>1</sub>'' <> ''string<sub>2</sub>''</code>
|[[BASIC]], [[Visual Basic (classic)|VB]], [[Visual Basic .NET|VB .NET]], [[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[OCaml]], [[PHP]], [[Seed7]], [[Standard ML]], [[F Sharp (programming language)|F#]], [[COBOL]], [[Cobra (programming language)|Cobra]], [[Python 2]] (deprecated)
|-
| <code>''string<sub>1</sub>'' # ''string<sub>2</sub>''</code>
Line 1,163 ⟶ 1,357:
|-
| <code>''string<sub>1</sub>'' ne ''string<sub>2</sub>''</code>
|[[Perl]], [[Raku (programming language)|Raku]]
|-
| <code>(string<> ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>
Line 1,169 ⟶ 1,363:
|-
| <code>(string/= ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>
|[[Common Lisp]]
|-
| <code>(string/= ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>
|[[ISLISP]]
|-
| <code>(not= ''string<sub>1</sub>'' ''string<sub>2</sub>'')</code>
|[[Clojure]]
|-
| <code>''string<sub>1</sub>'' != ''string<sub>2</sub>''</code>
|[[C++]] (STL), [[C Sharp (programming language)|C#]], [[Go (programming language)|Go]], [[JavaScript]] (not similar), [[PHP]] (not similar), [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Rust (programming language)|Rust]],<ref name="Rust compare" /> [[Swift (programming language)|Swift]], [[D (programming language)|D]], [[Mathematica]]
|-
| <code>''string<sub>1</sub>'' !== ''string<sub>2</sub>''</code>
|[[JavaScript]], [[PHP]]
|-
| <code>''string<sub>1</sub>'' \= ''string<sub>2</sub>''</code>
|[[Rexx]]
|-
| <code>''string<sub>1</sub>'' ¬= ''string<sub>2</sub>''</code>
|[[PL/I]]
|-
| <code>test ''string<sub>1</sub>'' != ''string<sub>2</sub>'', or <br /code><br><code>[ ''string<sub>1</sub>'' != ''string<sub>2</sub>'' ]</code>
|[[Bourne Shell]]
|-
| <code>''string<sub>1</sub>'' -ne ''string<sub>2</sub>'', or <br /code><br><code>-not [string]::Equals(''string<sub>1</sub>'', ''string<sub>2</sub>'')</code>
|[[Windows PowerShell]]
|-
| <code>''string<sub>1</sub>'' ~= ''string<sub>2</sub>''</code>
|[[Lua (programming language)|Lua]], [[Smalltalk]]
|-
| <code>''string<sub>1</sub>'' ≢ ''string<sub>2</sub>''</code>
|[[APL (programming language)|APL]]
|-
| <code>''string<sub>1</sub>''.ne(''string<sub>2</sub>'')</code>
| [[Rust (programming language)|Rust]]<ref name="Rust compare" />
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"hello" != "world" // returns true
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Example in Visual Basic
"hello" <> "world" ' returns true
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="clojure">
;; Example in Clojure
(not= "hello" "world") ; ⇒ true
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl">
# Example in Perl 5
'hello' ne 'world' # returns 1
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Example in Raku
'hello' ne 'world' # returns True
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="powershell">
# Example in Windows PowerShell
"hello" -ne "world" # returns true
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 1,235 ⟶ 1,445:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code> join(''separator'', ''list_of_strings'')</code> returns a list of strings joined with a separator
|-
Line 1,246 ⟶ 1,456:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>std.string.join(''array_of_strings'', ''separator'')</code>
Line 1,255 ⟶ 1,465:
|-
| <code>join(''separator'', ''list_of_strings'')</code>
|[[Perl]], [[PHP]], [[Raku (programming language)|Raku]]
|-
| <code>implode(''separator'', ''array_of_strings'')</code>
Line 1,264 ⟶ 1,474:
|-
| <code>''array_of_strings''.join(''separator'')</code>
|[[Ruby (programming language)|Ruby]], [[JavaScript]], [[Raku (programming language)|Raku]], [[Rust (programming language)|Rust]]<ref>See the [https://doc.rust-lang.org/stable/std/primitive.slice.html#method.join <code>slice::join</code>] method.</ref>
|-
| <code>(string-join ''array_of_strings'' ''separator'')</code>
Line 1,272 ⟶ 1,482:
|[[Common Lisp]]
|-
| <code>(clojure.string/join ''separator'' ''list_of_strings'')</code><br><code>(apply str (interpose ''separator'' ''list_of_strings''))</code>
(apply str (interpose ''separator'' ''list_of_strings''))</code>
|[[Clojure]]
|-
Line 1,289 ⟶ 1,498:
|-
| <code>Data.List.intercalate ''separator'' ''list_of_strings''</code>
|[[Haskell (programming language)|Haskell]] (GHC 6.8+)
|-
| <code>Join(''array_of_strings'', ''separator'')</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>String.Join(''separator'', ''array_of_strings'')</code>
Line 1,300 ⟶ 1,509:
|[[Java (programming language)|Java]] 8+
|-
| <code>&{$OFS=''$separator''; "''$array_of_strings''"}, or <br /code><br><code>''array_of_strings'' -join ''separator''</code>
|[[Windows PowerShell]]
|-
Line 1,307 ⟶ 1,516:
|-
| <code>table.concat(''table_of_strings'', ''separator'')</code>
|[[Lua (programming language)|Lua]]
|-
| <code><nowiki>{|String streamContents: [ :stream |</nowiki> ''collectionOfAnything'' asStringOn: stream delimiter: ''separator'' <nowiki>]</nowiki> </code><br><code>''collectionOfAnything'' joinUsing: ''separator''</code>
''collectionOfAnything'' joinUsing: ''separator''</code>
|[[Smalltalk]] ([[Squeak]], [[Pharo]])
|-
Line 1,318 ⟶ 1,526:
| <code>''sequence_of_strings''.joinWithSeparator(''separator'')</code>
|[[Swift (programming language)|Swift]] 2.x
|-
| <code>1↓∊''separator'',¨''list_of_strings''</code>
|[[APL (programming language)|APL]]
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
String.Join("-", {"a", "b", "c"}) // "a-b-c"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="smalltalk">
" Example in Smalltalk "
#('a' 'b' 'c') joinUsing: '-' " 'a-b-c' "
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="perl">
# Example in Perl 5
join( '-', ('a', 'b', 'c')); # 'a-b-c'
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
<a b c>.join('-'); # 'a-b-c'
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="python">
# Example in Python
"-".join(["a", "b", "c"]) # 'a-b-c'
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="ruby">
# Example in Ruby
["a", "b", "c"].join("-") # 'a-b-c'
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Example in Scheme
(use-modules (srfi srfi-13))
(string-join '("a" "b" "c") "-") ; "a-b-c"
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 1,358 ⟶ 1,574:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>left(''string'',''n'')</code> returns string
|-
Line 1,366 ⟶ 1,582:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
|<code>{{codett|string (string'First .. string'First +|ada}} ''n'' - 1)</code>
|[[Ada (programming language)|Ada]]
|-
| <code>substr(''string'', 0, ''n'')</code>
|[[AWK]] (changes string), [[Perl]], [[PHP]], [[Raku (programming language)|Raku]]
|-
| <code>LEFT$(''string'',''n'')</code>
|[[BASIC]], [[Visual Basic (classic)|VB]]
|-
| <code>left(''string'',''n'')</code>
||[[Visual Basic (classic)|VB]], [[FreeBASIC]], [[Ingres (database)|Ingres]], [[Pick Basic]]
|-
| <code>strncpy(''string2'', ''string'', ''n'')</code>
Line 1,384 ⟶ 1,600:
|-
| <code>''string''.substr(0,''n'')</code>
|[[C++]] (STL), [[Raku (programming language)|Raku]]
|-
| <code>[''string'' substringToIndex:''n'']</code>
|[[Objective-C]] (<code>NSString *</code> only)
|-
| <code>{{codett|(apply str (take|clojure}} ''n'' ''string''))</code>
|[[Clojure]]
|-
Line 1,407 ⟶ 1,623:
|[[Rexx]], [[Erlang (programming language)|Erlang]]
|-
| <code>''string''[0, ''n''] <br /code><br><code> ''string''[0..''n'' - 1]</code>
|[[Ruby (programming language)|Ruby]]
|-
| <code>''string''[1, ''n'']</code>
|[[Pick Basic]]
|-
| <code>''string''[ .. ''n'']</code>
Line 1,417 ⟶ 1,636:
|-
| <code>leftstr(''string'', ''n'')</code>
|[[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
|<code>''copy'' (''string'',1,''n'')</code>
Line 1,423 ⟶ 1,642:
|-
| <code>''string''.substring(0,''n'')</code>
|[[Java (programming language)|Java]],<ref>if n is larger than the length of the string, Java will throw an IndexOutOfBoundsException</ref> [[JavaScript]]
|-
| <code>(string-take ''string'' ''n'')</code>
Line 1,429 ⟶ 1,648:
|-
| <code>take ''n'' ''string''</code>
|[[Haskell (programming language)|Haskell]]
|-
| <code>String.extract (''string'', ''n'', NONE)</code>
Line 1,440 ⟶ 1,659:
|[[F Sharp (programming language)|F#]]
|-
| <code>string.sub(''string'', 1, ''n'') <br /code><br><code> (''string''):sub(1, ''n'')</code>
|[[Lua (programming language)|Lua]]
|-
Line 1,457 ⟶ 1,676:
|<code>''string''.substring(0, ''n'')</code>
|[[Cobra (programming language)|Cobra]]
|-
|<code>''n''↑''string''.</code>
|[[APL (programming language)|APL]]
|-
| <code>''string''[0..n]</code><br><code>''string''[..n]</code><br><code>''string''.get(0..n)</code><br><code>''string''.get(..n)</code>
| [[Rust (programming language)|Rust]]<ref name="Rust indexing">In Rust, strings are indexed in terms of byte offsets and there is a runtime panic if the index is out of bounds or if it would result in invalid [[UTF-8]]. A <code>&str</code> (string reference) can be [https://doc.rust-lang.org/stable/std/primitive.str.html#impl-Index%3CI%3E indexed] by various types of ranges, including [https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html#impl-SliceIndex%3Cstr%3E <code>Range</code>] (<code>0..n</code>), [https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html#impl-SliceIndex%3Cstr%3E-1 <code>RangeFrom</code>] (<code>n..</code>), and [https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html#impl-SliceIndex%3Cstr%3E-4 <code>RangeTo</code>] (<code>..n</code>) because they all implement the [https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html <code>SliceIndex</code>] trait with <code>str</code> being the type being indexed.
 
The [https://doc.rust-lang.org/stable/std/primitive.str.html#method.get <code>str::get</code>] method is the non-panicking way to index. It returns [[option type|<code>None</code>]] in the cases in which indexing would panic.</ref>
|}
 
<sourcesyntaxhighlight lang="rexxperl6">
# Example in Raku
"Hello, there!".substr(0, 6); # returns "Hello,"
</syntaxhighlight>
 
<syntaxhighlight lang="rexx">
/* Examples in Rexx */
left("abcde", 3) /* returns "abc" */
left("abcde", 8) /* returns "abcde " */
left("abcde", 8, "*") /* returns "abcde***" */
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Examples in Scheme
(use-modules (srfi srfi-13))
(string-take "abcde", 3) ; returns "abc"
(string-take "abcde", 8) ; error
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="Cppvbscript">
' Examples in Visual Basic
Left("sandroguidi", 3) ' returns "san"
Left("sandroguidi", 100) ' returns "sandroguidi"
</syntaxhighlight>
</source>
 
<source lang="Cpp">
// Examples in Ya
"abcde"[0..3] // returns "abc"
"abcde"[0..8] // returns "abcde"
</source>
 
<!-- endsection -->
Line 1,495 ⟶ 1,722:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>length(''string'')</code> returns an integer number
|-
Line 1,503 ⟶ 1,730:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Returns !! Languages
|-
|<code>string'Length</code>
Line 1,512 ⟶ 1,739:
| <code></code>
|[[ALGOL 68]]
|-
|<code>echo "${#''string_param''}"</code>
| <code></code>
|[[Bash (Unix shell)|Bash]]
|-
| <code>length(''string'')</code>
| <code></code>
|[[Ingres (database)|Ingres]], [[Perl]] 5, [[Pascal (programming language)|Pascal]], [[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]), [[Rexx]], [[Seed7]], [[SQL]], [[PL/I]]
|-
| <code>[[Len (programming)|len]](''string'')</code>
| <code></code>
|[[BASIC]], [[FreeBASIC]], [[Python (programming language)|Python]], [[Go (programming language)|Go]], [[Pick Basic]]
|-
| <code>length(''string''), string:len(''string'')</code>
Line 1,525 ⟶ 1,756:
|[[Erlang (programming language)|Erlang]]
|-
| <code>[[Len (programming)|Len]](''string'')</code>
| <code></code>
|[[Visual Basic (classic)|VB]], [[Pick Basic]]
|-
| <code>''string''.Length</code>
|Number of 16-bit [[UTF-16]]-encoded blocks[[code unit]]s
|[[Visual Basic .NET|VB .NET]], [[C Sharp (programming language)|C#]], [[Windows PowerShell]], [[F Sharp (programming language)|F#]]
|-
| <code>chars(''string'')</code><br><code>''string''.chars</code>
|Number of graphemes (NFG)
|[[Raku (programming language)|Raku]]
|-
| <code>codes(''string'')</code><br><code>''string''.codes</code>
|Number of Unicode code points
|[[Raku (programming language)|Raku]]
|-
| <code>''string''.size OR ''string''.length</code>
Line 1,550 ⟶ 1,789:
|-
| <code>''string''.length()</code>
|Number of 16-bit [[UTF-16]]-encoded blocks[[code unit]]s
|[[Java (programming language)|Java]]
|-
Line 1,574 ⟶ 1,813:
|-
| <code>length ''string''</code>
|Number of Unicode codepointscode points
|[[Haskell (programming language)|Haskell]]
|-
| <code>''string''.length</code>
| Number of 16-bit [[UTF-16]]-encoded blockscode units
|[[Objective-C]] (<code>NSString *</code> only)
|-
Line 1,593 ⟶ 1,832:
|[[Swift (programming language)|Swift]] (1.0–1.1)
|-
| <code>string.len(''string'') <br /code><br><code> (''string''):len() <br /code><br><code> #''string''</code>
| <code></code>
|[[Lua (programming language)|Lua]]
Line 1,601 ⟶ 1,840:
|[[Smalltalk]]
|-
| <code>LEN(''string''), or </code><br><code>LEN_TRIM(''string'')</code>
| <code></code>
|[[Fortran]]
Line 1,608 ⟶ 1,847:
| <code></code>
|[[Mathematica]]
|-
|<code>Length(string)</code> or
<code>Size(string)</code>
| number of bytes as <code>$int+</code>
| Ya
|-
|<code>«FUNCTION» LENGTH(''string'')</code> or
Line 1,619 ⟶ 1,853:
| [[COBOL]]
|-
|<code>string length ''string''</code>
|a decimal string giving the number of characters
|[[Tcl]]
|-
|<code>≢ ''string''</code>
|
|[[APL (programming language)|APL]]
|-
| <code>''string''.len()</code>
| Number of bytes
| [[Rust (programming language)|Rust]]<ref>See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.len <code>str::len</code>] method.</ref>
|-
| <code>''string''.chars().count()</code>
| Number of Unicode code points
| [[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/std/primitive.str.html#method.chars <code>str::chars</code>] method iterates over code points and the [https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.count <code>std::iter::Iterator::count</code>] method on iterators consumes the iterator and returns the total number of elements in the iterator.</ref>
|}
 
<sourcesyntaxhighlight lang="csharp">
// Examples in C#
"hello".Length; // returns 5
"".Length; // returns 0
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="erlang">
# Examples in Erlang
string:len("hello"). % returns 5
string:len(""). % returns 0
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="perl">
# Examples in Perl 5
length("hello"); # returns 5
length(""); # returns 0
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
"🏳️‍🌈".chars; chars "🏳️‍🌈"; # both return 1
"🏳️‍🌈".codes; codes "🏳️‍🌈"; # both return 4
"".chars; chars ""; # both return 0
"".codes; codes ""; # both return 0
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Examples in Visual Basic
Len("hello") ' returns 5
Len("") ' returns 0
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="objc">
//Examples in Objective-C
[@"hello" Length] //returns 5
[@"" Length] //returns 0
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="lua">
-- Examples in Lua
("hello"):len() -- returns 5
#"" -- returns 0
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 1,671 ⟶ 1,925:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>lowercase(''string'')</code> returns string
|-
! Description
| Returns the string in lower case.
|}
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>LCase(''string'') </code>
|[[Visual Basic (classic)|VB]]
|-
| <code>lcase(''string'') </code>
|[[FreeBASIC]]
|-
| <code>lc(''string'')</code>
|[[Perl]], [[Raku (programming language)|Raku]]
|[[Perl]]
|-
| <code>''string''.lc</code>
|[[Raku (programming language)|Raku]]
|-
|<code>tolower(''char'')</code>
|[[C (programming language)|C]]<ref>operates on one character</ref>
|-
| <code>std.string.toLower(''string'') </code>
|[[D (programming language)|D]]
|-
Line 1,700 ⟶ 1,957:
|-
| <code>lowercase(''string'')</code>
|[[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
| <code>strtolower(''string'')</code>
Line 1,707 ⟶ 1,964:
| <code>lower(''string'')</code>
|[[Seed7]]
|-
|<code>${''string_param'',,}</code>
|[[Bash (Unix shell)|Bash]]
|-
|<code>[[echo (command)|echo]] "string" <nowiki>|</nowiki> [[tr (program)|tr]] 'A-Z' 'a-z'</code>
Line 1,713 ⟶ 1,973:
| <code>''string''.lower()</code>
|[[Python (programming language)|Python]]
|-
| <code>downcase(''string'')</code>
|[[Pick Basic]]
|-
| <code>''string''.downcase</code>
Line 1,733 ⟶ 1,996:
|-
| <code>map Char.toLower ''string''</code>
|[[Haskell (programming language)|Haskell]]
|-
| <code>''string''.toLowerCase()</code>
Line 1,747 ⟶ 2,010:
|[[Objective-C]] (<code>NSString *</code> only), [[Swift (programming language)|Swift]] (Foundation)
|-
| <code>string.lower(''string'') <br /code><br><code> (''string''):lower()</code>
|[[Lua (programming language)|Lua]]
|-
Line 1,757 ⟶ 2,020:
|-
| <code>lowercase(''string'')</code>
|[[PL/I]]<ref name="lower1">IBM extension.</ref>
|-
| <code>ToLowerCase[''string'']</code>
Line 1,768 ⟶ 2,031:
|[[Cobra (programming language)|Cobra]]
|-
| <code>string tolower ''string''</code>
|[[Tcl]]
|-
| <code>''string''.to_lowercase()</code>
| [[Rust (programming language)|Rust]]<ref>See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.to_lowercase <code>str::to_lowercase</code>] method.</ref>
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"Wiki means fast?".ToLower(); // "wiki means fast?"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Example in Scheme
(use-modules (srfi srfi-13))
(string-downcase "Wiki means fast?") ; "wiki means fast?"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="c">
/* Example in C */
#include <ctype.h>
Line 1,791 ⟶ 2,057:
int i;
for (i = 0; i < sizeof(string) - 1; ++i) {
/* transform characters in place, one by one */
string[i] = tolower(string[i]);
}
Line 1,797 ⟶ 2,063:
return 0;
}
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"Wiki means fast?".lc; # "wiki means fast?"
</syntaxhighlight>
 
<!-- endsection -->
 
Line 1,808 ⟶ 2,080:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <string>.partition(''separator'') returns the sub-string before the separator; the separator; then the sub-string after the separator.
|-
! Description
| Splits the given string by the separator and returns the three substrings that together make the original.
|}
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages !! Comments
|-
| <code>''string''.partition(''separator'')</code>
|[[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]](1.9+)
|
|-
| <code>lists:partition(''pred'', ''string'')</code>
|[[Erlang (programming language)|Erlang]]
|
|-
| <code>split /(''separator'')/, ''string'', 2</code>
|[[Perl]] 5
|
|-
| <code>split ''separator'', ''string'', 2</code><br><code>''string''.split( ''separator'', 2 )</code>
|[[Raku (programming language)|Raku]]
|Separator does not have to be a regular expression
|}
 
<sourcesyntaxhighlight lang="python">
# 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', "", "")
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="perl">
# Examples in Perl 5 / Raku
split /(spam)/, 'Spam eggs spam spam and ham' ,2; # ('Spam eggs ', 'spam', ' spam and ham');
split /(X)/, 'Spam eggs spam spam and ham' ,2; # ('Spam eggs spam spam and ham');
</syntaxhighlight>
</source>
 
<!-- endsection -->
Line 1,845 ⟶ 2,124:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>replace(''string'', ''find'', ''replace'')</code> returns string
|-
Line 1,853 ⟶ 2,132:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>changestr(''find'', ''string'', ''replace'')</code>
Line 1,862 ⟶ 2,141:
|-
| <code>Replace(''string'', ''find'', ''replace'')</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>replace(''string'', ''find'', ''replace'')</code>
|[[Seed7]]
|-
| <code>change(''string'', ''find'', ''replace'')</code>
|[[Pick Basic]]
|-
| <code>''string''.Replace(''find'', ''replace'')</code>
|[[Visual Basic .NET|VB .NET]], [[C Sharp (programming language)|C#]], [[F Sharp (programming language)|F#]], [[Visual Basic .NET|VB .NET]]
|-
| <code>str_replace(''find'', ''replace'', ''string'')</code>
Line 1,877 ⟶ 2,159:
|-
| <code>''string''.replace(''find'', ''replace'')</code>
|[[Cobra (programming language)|Cobra]], [[Java (programming language)|Java]] (1.5+), [[Python (programming language)|Python]], [[JavaRust (programming language)|JavaRust]]<ref>See (1the [https://doc.5+)rust-lang.org/stable/std/primitive.str.html#method.replace <code>str::replace</code>] method.</ref>
|-
| <code>''string''.replaceAll(''find_regex'', ''replace'')<ref name="regex" /></code>
Line 1,886 ⟶ 2,168:
|-
| <code>''string'' =~ s/''find_regex''/''replace''/g<ref name="regex">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.</ref></code>
|[[Perl]] 5
|-
| <code>''string''.replacesubst(''find'', ''replace'', ":g") <ref>third parameter is non-standard</ref> or<br /> ''string''.replace(/''find_regex''/g, ''replace'')<ref name="regex" /></code>
|[[Raku (programming language)|Raku]]
|-
| <code>''string''.replace(''find'', ''replace'', "g") <ref>third parameter is non-standard</ref></code><br><code>''string''.replace(/''find_regex''/g, ''replace'')<ref name="regex" /></code>
|[[JavaScript]]
|-
Line 1,894 ⟶ 2,179:
|[[Unix]]
|-
| <code>${''stringstring_param''.replace(//''findfind_pattern'', ''replace''), or<br />''string'' -replace ''find_regex'', ''replace''<ref name="regex" />}</code>
|[[Bash (Unix shell)|Bash]]
|-
| <code>''string''.replace(''find'', ''replace'')</code><br><code>''string'' -replace ''find_regex'', ''replace''<ref name="regex" /></code>
|[[Windows PowerShell]]
|-
Line 1,906 ⟶ 2,194:
|[[Swift (programming language)|Swift]] (Foundation)
|-
| <code>string.gsub(''string'', ''find'', ''replace'') <br /code><br><code> (''string''):gsub(''find'', ''replace'')</code>
|[[Lua (programming language)|Lua]]
|-
Line 1,923 ⟶ 2,211:
| <code>INSPECT ''string'' REPLACING ALL/LEADING/FIRST ''find'' BY ''replace''</code>
| [[COBOL]]
|-
| <code>''find_regex'' ⎕R ''replace_regex'' ⊢ ''string''</code>
| [[APL (programming language)|APL]]
|}
 
<sourcesyntaxhighlight lang="csharp">
// Examples in C#
"effffff".Replace("f", "jump"); // returns "ejumpjumpjumpjumpjumpjump"
"blah".Replace("z", "y"); // returns "blah"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="java5java">
// Examples in Java
"effffff".replace("f", "jump"); // returns "ejumpjumpjumpjumpjumpjump"
"effffff".replaceAll("f*", "jump"); // returns "ejump"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbperl6">
// Examples in Raku
"effffff".subst("f", "jump", :g); # returns "ejumpjumpjumpjumpjumpjump"
"blah".subst("z", "y", :g); # returns "blah"
</syntaxhighlight>
 
<syntaxhighlight lang="vbnet">
' Examples in Visual Basic
Replace("effffff", "f", "jump") ' returns "ejumpjumpjumpjumpjumpjump"
Replace("blah", "z", "y") ' returns "blah"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="powershell">
# Examples in Windows PowerShell
"effffff" -replace "f", "jump" # returns "ejumpjumpjumpjumpjumpjump"
"effffff" -replace "f*", "jump" # returns "ejump"
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 1,953 ⟶ 2,250:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>reverse(''string'')</code>
|-
Line 1,961 ⟶ 2,258:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>reverse ''string''</code>
|[[Perl]] 5, [[Haskell (programming language)|Haskell]]
|-
| <code>flip ''string''</code><br><code>''string''.flip</code>
|[[Raku (programming language)|Raku]]<!-- reverses graphemes -->
|-
| <code>lists:reverse(''string'')</code>
Line 1,991 ⟶ 2,291:
|-
| <code>StrReverse(''string'')</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>''string''.Reverse().ToString()</code>
|[[Visual Basic .NET|VB .NET]], [[C Sharp (programming language)|C#]]
|-
Line 2,002 ⟶ 2,302:
|[[JavaScript]]
|-
| <code>string.reverse(''string'') <br /code><br><code> (''string''):reverse()</code>
|[[Lua (programming language)|Lua]]
|-
Line 2,017 ⟶ 2,317:
|[[COBOL]]
|-
|<code>''string''.toCharArray.toList.reversed.join('')</code>
|[[Cobra (programming language)|Cobra]]
|-
Line 2,026 ⟶ 2,326:
|[[Swift (programming language)|Swift]] (1.2)
|-
| <code>string reverse ''string''</code>
|[[Tcl]]
|-
| <code>⌽''string''</code>
|[[APL (programming language)|APL]]
|-
| <code>''string''.chars().rev().collect::<String>()</code>
| [[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/std/primitive.str.html#method.chars <code>str::chars</code>] method iterates over code points, the [https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.rev <code>std::iter::Iterator::rev</code>] method on reversible iterators ([https://doc.rust-lang.org/stable/std/iter/trait.DoubleEndedIterator.html <code>std::iter::DoubleEndedIterator</code>]) creates a reversed iterator, and the [https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect <code>std::iter::Iterator::collect</code>] method consumes the iterator and creates a collection (which here is specified as a [https://doc.rust-lang.org/stable/std/string/struct.String.html <code>String</code>] with the [[turbofish]] syntax) from the iterator's elements.</ref>
|-
| <code>echo ''string'' <nowiki>|</nowiki> rev</code>
| [[Unix]]
|}
 
<sourcesyntaxhighlight lang="smalltalk">
" Example in Smalltalk "
'hello' reversed " returns 'olleh' "
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="perl">
# Example in Perl 5
reverse "hello" # returns "olleh"
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Example in Raku
"hello".flip # returns "olleh"
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="python">
# Example in Python
"hello"[::-1] # returns "olleh"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Example in Scheme
(use-modules (srfi srfi-13))
(string-reverse "hello") ; returns "olleh"
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 2,056 ⟶ 2,370:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>rfind(''string'',''substring'')</code> returns integer
|-
Line 2,070 ⟶ 2,384:
|-
| <code>InStrRev(«''startpos'',» ''string'',''substring'')</code>
|[[Visual Basic (classic)|VB]]
|returns 0
|-
Line 2,078 ⟶ 2,392:
|-
| <code>rindex(''string'',''substring''«,''startpos''»)</code>
|[[Perl]] 5
|returns −1
|-
| <code>rindex(''string'',''substring''«,''startpos''»)</code><br><code>''string''.rindex(''substring''«,''startpos''»)</code>
|[[Raku (programming language)|Raku]]
|returns {{mono|Nil}}
|-
| <code>strrpos(''string'',''substring''«,''startpos''»)</code>
|[[PHP]]
|returns {{mono|FALSE}}
|-
| <code>''string''.rfind(''substring''«,''startpos''»)</code>
|[[C++]] (STL)
|returns {{mono|std::string::npos}}
|-
| <code>std.string.rfind(''string'', ''substring'')</code>
Line 2,098 ⟶ 2,416:
|-
|<code>''string''.rindex(''substring''«,''startpos''«, ''endpos''»»)</code>
|raises {{mono|ValueError}}
|-
|<code>rpos(''string'', ''substring''«,''startpos''»)</code>
Line 2,106 ⟶ 2,424:
|<code>''string''.rindex(''substring''«,''startpos''»)</code>
|[[Ruby (programming language)|Ruby]]
|returns {{mono|nil}}
|-
| <code>strings.LastIndex(''string'', ''substring'')</code>
Line 2,122 ⟶ 2,440:
| <code>(search ''substring'' ''string'' :from-end t)</code>
|[[Common Lisp]]
|returns {{mono|NIL}}
|-
| <code>[''string'' rangeOfString:''substring'' options:NSBackwardsSearch].___location</code>
|[[Objective-C]] (<code>NSString *</code> only)
|returns {{mono|NSNotFound}}
|-
| <code>Str.search_backward (Str.regexp_string ''substring'') ''string'' (Str.length ''string'' - 1)</code>
|[[OCaml]]
|raises {{mono|Not_found}}
|-
| <code>string.match(''string'', '.*()'..''substring'') <br /code><br><code> ''string'':match('.*()'..''substring'')</code>
|[[Lua (programming language)|Lua]]
|returns {{mono|nil}}
|-
| <code>Ada.Strings.Unbounded.Index(Source => ''string'', Pattern => ''substring'', <br /> Going => Ada.Strings.Backward)</code>
|[[Ada (programming language)|Ada]]
|returns 0
Line 2,148 ⟶ 2,466:
|returns 0
|-
|<code>string last ''substring string startpos''</code>
|[[Tcl]]
|returns −1
|-
|<code>(⌽<\⌽''substring''⍷'string')⍳1</code>
|[[APL (programming language)|APL]]
|returns −1
|-
| <code>''string''.rfind(''substring'')</code>
| [[Rust (programming language)|Rust]]<ref>See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.rfind <code>str::rfind</code>] method.</ref>
| returns [[Option type|{{mono|None}}]]
|}
 
<sourcesyntaxhighlight lang="lisp">
; Examples in Common Lisp
(search "e" "Hello mate" :from-end t) ; returns 9
(search "z" "word" :from-end t) ; returns NIL
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="csharp">
// Examples in C#
"Hello mate".LastIndexOf("e"); // returns 9
"Hello mate".LastIndexOf("e", 4); // returns 1
"word".LastIndexOf("z"); // returns -1
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl">
# Examples in Perl 5
rindex("Hello mate", "e"); # returns 9
rindex("Hello mate", "e", 4); # returns 1
rindex("word", "z"); # returns -1
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
"Hello mate".rindex("e"); # returns 9
"Hello mate".rindex("e", 4); # returns 1
"word".rindex('z'); # returns Nil
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Examples in Visual Basic
InStrRev("Hello mate", "e") ' returns 10
InStrRev(5, "Hello mate", "e") ' returns 2
InStrRev("word", "z") ' returns 0
</syntaxhighlight>
</source>
 
<!-- endsection -->
Line 2,178 ⟶ 2,518:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>right(''string'',''n'')</code> returns string
|-
Line 2,186 ⟶ 2,526:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
|<code>string (string'Last - ''n'' + 1 .. string'Last)</code>
Line 2,192 ⟶ 2,532:
|-
| <code>Right(''string'',''n'')</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>RIGHT$(''string'',''n'')</code>
Line 2,198 ⟶ 2,538:
|-
| <code>right(''string'',''n'')</code>
|[[FreeBASIC]], [[Ingres (database)|Ingres]], [[Pick Basic]]
|-
| <code>strcpy(''string2'', ''string''+''n'')</code> (n must not be greater than the length of ''string'')
Line 2,205 ⟶ 2,545:
| <code>''string''.Substring(''string''.Length()-''n'')</code>
|[[C Sharp (programming language)|C#]]
|-
| <code>''string''[len(''string'')-''n'':]</code>
|[[Go (programming language)|Go]]
|-
| <code>''string''.substring(''string''.length()-''n'')</code>
Line 2,210 ⟶ 2,553:
|-
| <code>''string''.slice(-''n'')</code>
|[[JavaScript]]<ref>{{cite web |url=httphttps://es5.github.com/#x15.5.4.13 |title=Annotated ES5 |publisher=Es5.github.com |access-date=2013-08-18 |accessdatearchive-date=2013-0801-1828 |archive-url=https://web.archive.org/web/20130128185825/https://es5.github.com/#x15.5.4.13 |url-status=dead }}</ref>
|-
| <code>right(''string'',''n'' «,''padchar''»)</code>
Line 2,216 ⟶ 2,559:
|-
| <code>substr(''string'',-''n'')</code>
|[[Perl]] 5, [[PHP]]
|-
| <code>substr(''string'',*-''n'')</code><br><code>''string''.substr(*-''n'')</code>
|[[Raku (programming language)|Raku]]
|-
| <code>''string''[-''n'':]</code>
|[[Cobra (programming language)|Cobra]], [[Python (programming language)|Python]]
|-
| <code>${''string_param'': -''n''}</code> (note the space after the colon)
|[[Bash (Unix shell)|Bash]]
|-
| <code>''string''[''n'']</code>
|[[Pick Basic]]
|-
| <code>(string-take-right ''string'' ''n'')</code>
Line 2,225 ⟶ 2,577:
|-
| <code>''string''[-''n''..-1]</code>
|[[Ruby (programming language)|Ruby]], Ya
|-
| <code>''string''[$-''n'' .. $]</code>
Line 2,233 ⟶ 2,585:
|[[OCaml]]<ref name="ReferenceA"/>
|-
| <code>string.sub(''string'', -''n'') <br /code><br><code> (''string''):sub(-''n'')</code>
|[[Lua (programming language)|Lua]]
|-
Line 2,244 ⟶ 2,596:
| <code>''string'' (1:''n'')</code>
| [[COBOL]]
|-
|<code>''¯n''↑''string''.</code>
|[[APL (programming language)|APL]]
|-
| <code>''string''[n..]</code><br><code>''string''.get(n..)</code>
| [[Rust (programming language)|Rust]]<ref name="Rust indexing" />
|}
 
<sourcesyntaxhighlight lang="rexxjava">
// Examples in Java; extract rightmost 4 characters
String str = "CarDoor";
str.substring(str.length()-4); // returns 'Door'
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
"abcde".substr(*-3); # returns "cde"
"abcde".substr(*-8); # 'out of range' error
</syntaxhighlight>
 
<syntaxhighlight lang="rexx">
/* Examples in Rexx */
right("abcde", 3) /* returns "cde" */
right("abcde", 8) /* returns " abcde" */
right("abcde", 8, "*") /* returns "***abcde" */
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Examples in Scheme
(use-modules (srfi srfi-13))
(string-take-right "abcde", 3) ; returns "cde"
(string-take-right "abcde", 8) ; error
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Examples in Visual Basic
Right("sandroguidi", 3) ' returns "idi"
Right("sandroguidi", 100) ' returns "sandroguidi"
</syntaxhighlight>
</source>
 
<source lang="java">
// Examples in Java; extract rightmost 4 characters
String str = "CarDoor";
str.substring(str.length()-4); // returns 'Door'
</source>
 
<!-- endsection -->
Line 2,277 ⟶ 2,641:
{| class="wikitable"
|- style="background:#fffeed;"
! 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.
|-
! Description
| Splits the given string by the right-most separator and returns the three substrings that together make the original.
|}
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>''string''.rpartition(''separator'')</code>
Line 2,291 ⟶ 2,655:
|}
 
<sourcesyntaxhighlight lang="python">
# 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')
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 2,306 ⟶ 2,670:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <string>.split(''separator''[, ''limit'']) splits a string on separator, optionally only up to a 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. JavaScript differs also in that it cuts, it does not put the rest of the string into the last element. [httphttps://www.w3schools.com/jsref/jsref_split.asp See the example here]. The Cobra implementation will default to whitespace. Opposite of ''join''.
|}
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>split(/''separator''/, ''string''«, ''limit''»)</code>
|[[Perl]] 5
|-
| <code>split(''separator'', ''string''«, ''limit''»)</code><br><code>''string''.split(''separator'', «''limit''»)</code>
|[[Raku (programming language)|Raku]]
|-
| <code>explode(''separator'', ''string''«, ''limit''»)</code>
Line 2,331 ⟶ 2,698:
|[[Erlang (programming language)|Erlang]]
|-
| <code>strings.Split(''string'', ''separator'')<br /code><br><code>strings.SplitN(''string'', ''separator'', ''limit'')</code>
|[[Go (programming language)|Go]]
|-
Line 2,338 ⟶ 2,705:
|-
| <code>Split(''string'', ''sepchars''«, ''limit''»)</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>''string''.Split(''sepchars''«, ''limit''«, ''options''»»)</code>
Line 2,367 ⟶ 2,734:
|[[Cobra (programming language)|Cobra]]
|-
|<code>split ''string separator''</code>
|[[Tcl]]
|-
| <code>(''separator''≠''string'')⊂''string''</code> in APL2<br><code>''separator''(≠⊆⊢)''string''</code> in Dyalog APL 16.0
|[[APL (programming language)|APL]]
|-
| <code>''string''.split(''separator'')</code>
<code>''string''.split(''limit'', ''separator'')</code>
| [[Rust (programming language)|Rust]]<ref>See the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.split <code>str::split</code>] and [https://doc.rust-lang.org/stable/std/primitive.str.html#method.rsplit <code>str::rsplit</code>] methods.</ref>
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"abc,defgh,ijk".Split(','); // {"abc", "defgh", "ijk"}
"abc,defgh;ijk".Split(',', ';'); // {"abc", "defgh", "ijk"}
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="erlang">
% Example in Erlang
string:tokens("abc;defgh;ijk", ";"). % ["abc", "defgh", "ijk"]
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="java">
// Examples in Java
"abc,defgh,ijk".split(","); // {"abc", "defgh", "ijk"}
"abc,defgh;ijk".split(",|;"); // {"abc", "defgh", "ijk"}
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="pascal">
{ Example in Pascal }
var
Line 2,401 ⟶ 2,775:
lStr := lStrings.Strings[2]; // 'ijk'
end;
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="perl">
# Examples in Perl 5
split(/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')
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
'Spam eggs spam spam and ham'.split(/spam/); # (Spam eggs and ham)
split(/X/, 'Spam eggs spam spam and ham'); # (Spam eggs spam spam and ham)
</syntaxhighlight>
 
<!-- endsection -->
 
Line 2,428 ⟶ 2,809:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>substring(''string'', ''startpos'', ''endpos'')</code> returns string <br /> <code>substr(''string'', ''startpos'', ''numChars'')</code> 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. Note that for variable-length encodings such as [[UTF-8]], [[UTF-16]] or [[Shift-JIS]], it can be necessary to remove string positions at the end, in order to avoid invalid strings.
Line 2,436 ⟶ 2,817:
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
|<code>string[''startpos'':''endpos'']</code>
Line 2,445 ⟶ 2,826:
|-
| <code>Mid(''string'', ''startpos'', ''numChars'')</code>
|[[Visual Basic (classic)|VB]]
|-
| <code>mid(''string'', ''startpos'', ''numChars'')</code>
|[[FreeBASIC]]
|-
| <code>''string''[''startpos''+(⍳''numChars'')-~⎕IO]</code>
|[[APL (programming language)|APL]]
|-
| <code>MID$(''string'', ''startpos'', ''numChars'')</code>
Line 2,454 ⟶ 2,838:
|-
| <code>substr(''string'', ''startpos'', ''numChars'')</code>
|[[AWK]] (changes string), [[Perl]] 5,<ref name="substr2"/><ref name="substr4"/> [[PHP]]<ref name="substr2"/><ref name="substr4"/>
|-
| <code>substr(''string'', ''startpos'', ''numChars'')</code><br><code>''string''.substr(''startpos'', ''numChars'')</code>
|[[Raku (programming language)|Raku]]<ref name="substr5"/><ref name="substr6"/>
|-
| <code>substr(''string'', ''startpos'' «,''numChars'', ''padChar''»)</code>
Line 2,462 ⟶ 2,849:
|[[Cobra (programming language)|Cobra]], [[Python (programming language)|Python]],<ref name="substr2"/><ref name="substr3"/> [[Go (programming language)|Go]]
|-
| <code>''string''[''startpos'', ''numChars''] <br /> ''string''[''startpos'' .. ''endpos''-1] <br /> ''string''[''startpos'' ... ''endpos'']</code>
|[[Pick Basic]]
|-
| <code>''string''[''startpos'', ''numChars'']</code><br><code>''string''[''startpos'' .. ''endpos''-1]</code><br><code>''string''[''startpos'' ... ''endpos'']</code>
|[[Ruby (programming language)|Ruby]]<ref name="substr2"/><ref name="substr3"/>
|-
| <code>''string''[''startpos'' .. ''endpos''] <br /code><br><code> ''string''[''startpos'' len ''numChars'']</code>
|[[Seed7]]
|-
Line 2,481 ⟶ 2,871:
|-
| <code>copy(''string'', ''startpos'', ''numChars'')</code>
|[[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
| <code>(substring ''string'' ''startpos'' ''endpos'')</code>
Line 2,498 ⟶ 2,888:
|[[Standard ML]]
|-
| <code>string:sub_string(''string'', ''startpos'', ''endpos'')<br /code><br><code>string:substr(''string'', ''startpos'', ''numChars'')</code>
|[[Erlang (programming language)|Erlang]]
|-
Line 2,504 ⟶ 2,894:
|[[C (programming language)|C]]
|-
| <code>''string''[''startpos'' .. ''endpos''+1]</code>
|[[D (programming language)|D]]
|-
| <code>take ''numChars'' $ drop ''startpos'' ''string''</code>
|[[Haskell (programming language)|Haskell]]
|-
| <code>[''string'' substringWithRange:NSMakeRange(''startpos'', ''numChars'')]</code>
Line 2,516 ⟶ 2,906:
|[[F Sharp (programming language)|F#]]
|-
| <code>string.sub(''string'', ''startpos'', ''endpos'') <br /code><br><code> (''string''):sub(''startpos'', ''endpos'')</code>
|[[Lua (programming language)|Lua]]<ref name="substr2"/><ref name="substr3"/>
|-
Line 2,531 ⟶ 2,921:
|[[Mathematica]]<ref name="substr2"/><ref name="substr3"/>
|-
| <code>''string''[''startpos'' .. ''endpos'']</code>
|Ya
| <code>''string'' (''startpos'':''numChars'')</code>
| [[COBOL]]
|-
| <code>${''string_param'':''startpos'':''numChars''}</code>
| [[Bash (Unix shell)|Bash]]
|-
|string range ''string startpos endpos''
|[[Tcl]]
|-
| <code>''string''[''startpos''..''endpos'']</code><br><code>''string''.get(''startpos''..''endpos'')</code>
| [[Rust (programming language)|Rust]]<ref name="Rust indexing" />
|}
 
<sourcesyntaxhighlight lang="csharp">
// Examples in C#
"abc".Substring(1, 1): // returns "b"
"abc".Substring(1, 2); // returns "bc"
"abc".Substring(1, 6); // error
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="lisp">
;; Examples in Common Lisp
(subseq "abc" 1 2) ; returns "b"
(subseq "abc" 2) ; returns "c"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="erlang">
% Examples in Erlang
string:substr("abc", 2, 1). % returns "b"
string:substr("abc", 2). % returns "bc"
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl">
# Examples in Perl 5
substr("abc", 1, 1); # returns "b"
substr("abc", 1); # returns "bc"
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Examples in Raku
"abc".substr(1, 1); # returns "b"
"abc".substr(1); # returns "bc"
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="python">
# Examples in Python
"abc"[1:2] # returns "b"
"abc"[1:3] # returns "bc"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="rexx">
/* Examples in Rexx */
substr("abc", 2, 1) /* returns "b" */
Line 2,571 ⟶ 2,977:
substr("abc", 2, 6) /* returns "bc " */
substr("abc", 2, 6, "*") /* returns "bc****" */
</syntaxhighlight>
</source>
 
<!-- endsection -->
Line 2,579 ⟶ 2,985:
{| class="wikitable"
|- style="background:#fffeed;"
! Definition
| <code>uppercase(''string'')</code> returns string
|-
! Description
| Returns the string in upper case.
|}
{| class="wikitable sortable"
|- style="text-align:left;"
! Format !! Languages
|-
| <code>UCase(''string'') </code>
|[[Visual Basic (classic)|VB]]
|-
| <code>ucase(''string'') </code>
|[[FreeBASIC]]
|-
| <code>toupper(''string'') </code>
|[[AWK]] (changes string)
|-
| <code>uc(''string'')</code>
|[[Perl]], [[Raku (programming language)|Raku]]
|[[Perl]]
|-
| <code>''string''.uc</code>
|[[Raku (programming language)|Raku]]
|-
|<code>toupper(''char'')</code>
|[[C (programming language)|C]] (operates on one character)
|-
|<code>{{codett|2=c|1=for(size_t i = 0, len = strlen(}}''string''); i&lt; len; i++) ''string''[i] = toupper(''string''[i]);</code><br/><code>{{codett|2=c|1=for (char *c =}} ''string''{{codett|2=c|1=; *c != '\0'; c++) *c = toupper(*c);}}</code>
|[[C (programming language)|C]] (string / char array)
|-
Line 2,614 ⟶ 3,023:
|-
| <code>uppercase(''string'')</code>
|[[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]])
|-
|<code>upcase(''char'')</code>
|[[Object Pascal]] ([[Delphi (programming languagesoftware)|Delphi]]) (operates on one character)
|-
| <code>strtoupper(''string'')</code>
Line 2,625 ⟶ 3,034:
|[[Seed7]]
|-
|<code>${''string_param''^^}</code> (mnemonic: ^ is pointing up)
|<code>[[echo (command)|echo]] "string" <nowiki>|</nowiki> [[tr (program)|tr]] 'a-z' 'A-Z' </code>
|[[Bash (Unix shell)|Bash]]
|-
|<code>[[echo (command)|echo]] "string" <nowiki>|</nowiki> [[tr (program)|tr]] 'a-z' 'A-Z'</code>
|[[Unix]]
|-
| <code>translate(''string'')</code>,<br><code>UPPER orvariables</code><br><code>PARSE UPPER VAR SrcVar DstVar</code>
<code>UPPER variables</code>, or<br/>
<code>PARSE UPPER VAR SrcVar DstVar</code>
|[[Rexx]]
|-
| <code>''string''.upper()</code>
|[[Python (programming language)|Python]]
|-
| <code>upcase(''string'')</code>
|[[Pick Basic]]
|-
| <code>''string''.upcase</code>
|[[Ruby (programming language)|Ruby]] <ref name="ReferenceC"/>
|-
| <code>strings.ToUpper(''string'')</code>
Line 2,652 ⟶ 3,065:
|-
| <code>map Char.toUpper ''string''</code>
|[[Haskell (programming language)|Haskell]]
|-
| <code>''string''.toUpperCase()</code>
|[[Java (programming language)|Java]], [[JavaScript]]
|-
| <code>''string''.uppercase()</code>
|[[Kotlin (programming language)|Kotlin]]<ref>{{cite web |title=uppercase - Kotlin Programming Language |url=https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/uppercase.html |website=Kotlin |access-date=9 November 2024 |language=en}}</ref>
|-
| <code>to_upper(''string'')</code>
Line 2,666 ⟶ 3,082:
|[[Objective-C]] (<code>NSString *</code> only), [[Swift (programming language)|Swift]] (Foundation)
|-
| <code>string.upper(''string'') <br /code><br><code> (''string''):upper()</code>
|[[Lua (programming language)|Lua]]
|-
Line 2,684 ⟶ 3,100:
|[[Cobra (programming language)|Cobra]]
|-
| <code>string toupper ''string''</code>
| [[Tcl]]
|-
| <code>''string''.to_uppercase()</code>
| [[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.to_uppercase <code>str::to_uppercase</code>] method returns a newly allocated [https://doc.rust-lang.org/stable/std/string/struct.String.html <code>String</code>] with any lowercase characters changed to uppercase ones following the Unicode rules.</ref>
|}
 
<sourcesyntaxhighlight lang="csharp">
// Example in C#
"Wiki means fast?".ToUpper(); // "WIKI MEANS FAST?"
</syntaxhighlight>
</source>
 
<syntaxhighlight lang="perl">
# Example in Perl 5
uc("Wiki means fast?"); # "WIKI MEANS FAST?"
</syntaxhighlight>
 
<syntaxhighlight lang="perl6">
# Example in Raku
uc("Wiki means fast?"); # "WIKI MEANS FAST?"
"Wiki means fast?".uc; # "WIKI MEANS FAST?"
</syntaxhighlight>
 
<sourcesyntaxhighlight lang="rexx">
/* Example in Rexx */
translate("Wiki means fast?") /* "WIKI MEANS FAST?" */
Line 2,704 ⟶ 3,134:
A='upper using Translate Function.'
Translate UPPER VAR A Z /* Z="UPPER USING TRANSLATE FUNCTION." */
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="scheme">
; Example in Scheme
(use-modules (srfi srfi-13))
(string-upcase "Wiki means fast?") ; "WIKI MEANS FAST?"
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="vbvbnet">
' Example in Visual Basic
UCase("Wiki means fast?") ' "WIKI MEANS FAST?"
</syntaxhighlight>
</source>
<!-- endsection -->
 
Line 2,724 ⟶ 3,154:
{| class="wikitable"
|- style="text-align:left;"
! Example usage !! Languages
|-
| <ttcode>''String''.Trim([''chars''])</ttcode>
|[[C Sharp (programming language)|C#]], [[VB.NET]], [[Windows PowerShell]]
|-
| <ttcode>''string''.strip();</ttcode>
|[[D (programming language)|D]]
|-
| <ttcode>(.trim ''string'')</ttcode>
|[[Clojure]]
|-
|<ttcode>''sequence'' [ predicate? ] trim</ttcode>
|[[Factor (programming language)|Factor]]
|-
| <ttcode>{{codett|(string-trim '(#\Space #\Tab #\Newline)|lisp}} ''string'')</ttcode>
|[[Common Lisp]]
|-
| <ttcode>(string-trim ''string'')</ttcode>
|[[Scheme (programming language)|Scheme]]
|-
| <ttcode>''string''.trim()</ttcode>
|[[Java (programming language)|Java]], [[JavaScript]] (1.8.1+, Firefox 3.5+), [[Rust (programming language)|Rust]]<ref>In Rust, the [https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim <code>str::trim</code>] method returns a reference to the original <code>&str</code>.</ref>
|-
| <ttcode>Trim(''String'')</ttcode>
|[[Pascal (programming language)|Pascal]],<ref>{{cite web|url=http://gnu-pascal.de/gpc-hr/Trim.html |title=Trim – GNU Pascal priručnik |publisher=Gnu-pascal.de |access-date= |accessdate=2013-08-24}}</ref> [[QBasic]], [[Visual Basic (classic)|Visual Basic]], [[Delphi programming language(software)|Delphi]]
|-
| <ttcode>''string''.strip()</ttcode>
|[[Python (programming language)|Python]]
|-
| <ttcode>strings.Trim(''string'', ''chars'')</ttcode>
|[[Go (programming language)|Go]]
|-
| <ttcode>LTRIM(RTRIM(''String''))</ttcode>
|[[Oracle Corporation|Oracle]] [[SQL]], [[T-SQL]]
|-
| <ttcode>strip(''string'' [,''option'', ''char''])</ttcode>
|[[REXX (programming language)|REXX]]
|-
| <ttcode>string:strip(''string'' [,''option'', ''char''])</ttcode>
|[[Erlang (programming language)|Erlang]]
|-
| <ttcode>''string''.strip or </code><br><code>''string''.lstrip or </code><br><code>''string''.rstrip</ttcode>
|[[Ruby (programming language)|Ruby]]
|-
| <ttcode>''string'' =~ s/^\s+//r =~ s/\s+$//r.trim</ttcode>
|[[Raku (programming language)|Raku]]
|[[Perl 5]]
|-
| <ttcode>trim(''string''.trim)</ttcode>
|[[PHP]], [[Raku (programming language)|Raku]]
|[[Perl 6]]
|-
| <tt>trim(''string'')</tt>
|[[PHP]]
|-
| <ttcode>[''string'' {{codett|stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]|objc}}</ttcode>
|[[Objective-C]] using [[Cocoa (API)|Cocoa]]
|-
| <ttcode>''string'' withBlanksTrimmed</code><br><code>''string'' withoutSpaces</code><br><code>''string'' withoutSeparators</ttcode>
|[[Smalltalk]] ([[Squeak]], [[Pharo]])<br>[[Smalltalk]]
|-
|<ttcode>strip(string)</ttcode>
|[[SAS System(software)|SAS]]
|-
|<ttcode>string trim ''$string''</ttcode>
|[[Tcl]]
|-
| <ttcode>TRIM(''string'') or </code><br><code>TRIM(ADJUSTL(''string''))</ttcode>
|[[Fortran]]
|-
| <ttcode>TRIM(''string'')</ttcode>
|[[SQL]]
|-
| <ttcode>TRIM(''string'') or </code><br><code>LTrim(''string'') or </code><br><code>RTrim(''String'')</ttcode>
|[[ColdFusion]]
|-
| <ttcode>String.trim ''string''</ttcode>
|[[OCaml]] 4+
|}
Line 2,805 ⟶ 3,232:
 
In languages without a built-in trim function, it is usually simple to create a custom function which accomplishes the same task.
 
====APL====
[[APL (programming language)|APL]] can use regular expressions directly:
<syntaxhighlight lang="apl">
Trim←'^ +| +$'⎕R''
</syntaxhighlight>
Alternatively, a functional approach combining Boolean masks that filter away leading and trailing spaces:
<syntaxhighlight lang="apl">
Trim←{⍵/⍨(∨\∧∘⌽∨\∘⌽)' '≠⍵}
</syntaxhighlight>
Or reverse and remove leading spaces, twice:
<syntaxhighlight lang="apl">
Trim←{(∨\' '≠⍵)/⍵}∘⌽⍣2
</syntaxhighlight>
 
====AWK====
In [[AWK programming language|AWK]], one can use regular expressions to trim:
 
<sourcesyntaxhighlight lang="awk">
ltrim(v) = gsub(/^[ \t]+/, "", v)
rtrim(v) = gsub(/[ \t]+$/, "", v)
trim(v) = ltrim(v); rtrim(v)
</syntaxhighlight>
</source>
 
or:
 
<sourcesyntaxhighlight lang="awk">
function ltrim(s) { sub(/^[ \t]+/, "", s); return s }
function rtrim(s) { sub(/[ \t]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
</syntaxhighlight>
</source>
 
====C/C++====
There is no standard trim function in C or C++. Most of the available string libraries<ref>{{cite web|url=http://www.and.org/vstr/comparison |title=String library comparison |publisher=And.org |access-date= |accessdate=2013-08-24}}</ref> for C contain code which implements trimming, or functions that significantly ease an efficient implementation. The function has also often been called '''EatWhitespace''' in some non-standard C libraries.
 
In C, programmers often combine a ltrim and rtrim to implement trim:
 
<sourcesyntaxhighlight lang="Cc">
#include <string.h>
#include <ctype.h>
Line 2,846 ⟶ 3,287:
size_t n;
n = 0;
while (str[n] != '\0' && isspace((unsigned char) str[n])) {
n++;
}
Line 2,857 ⟶ 3,298:
ltrim(str);
}
</syntaxhighlight>
</source>
 
The [[open-source software|open source]] C++ library [[Boost library|Boost]] has several trim variants, including a standard one:<ref>{{cite web|url=http://www.boost.org/doc/html/string_algo/usage.html#id2742817 |title=Usage – 1.54.0 |publisher=Boost.org |date=2013-05-22 |accessdateaccess-date=2013-08-24}}</ref>
 
<sourcesyntaxhighlight lang="cpp">
#include <boost/algorithm/string/trim.hpp>
trimmed = boost::algorithm::trim_copy("string");
</syntaxhighlight>
</source>
 
Note that withWith boost's function named simply <code>trim</code> the input sequence is modified in-place, and does not returnreturns ano result.
 
Another [[open-source software|open source]] C++ library [[Qt (toolkitsoftware)|Qt]], has several trim variants, including a standard one:<ref>[http://doc.trolltech.com/4.5/qstring.html#trimmed] {{webarchive |url=https://web.archive.org/web/20090802041055/http://doc.trolltech.com/4.5/qstring.html#trimmed |date=August 2, 2009 }}</ref>
 
<sourcesyntaxhighlight lang="cpp-qt">
#include <QString>
trimmed = s.trimmed();
</syntaxhighlight>
</source>
 
The [[Linux kernel]] also includes a strip function, <code>strstrip()</code>, since 2.6.18-rc1, which trims the string "in place". Since 2.6.33-rc1, the kernel uses <code>strim()</code> instead of <code>strstrip()</code> to avoid false warnings.<ref>{{cite web|author=dankamongmen |url=https://github.com/dankamongmen/sprezzos-kernel-packaging/blob/master/changelog |title=sprezzos-kernel-packaging/changelog at master · dankamongmen/sprezzos-kernel-packaging · GitHub |publisher=Github.com |access-date= |accessdate=2016-05-29}}</ref>
 
====Haskell====
A trim algorithm in [[Haskell (programming language)|Haskell]]:
 
<sourcesyntaxhighlight lang="haskell">
import Data.Char (isSpace)
trim :: String -> String
trim = f . f
where f = reverse . dropWhile isSpace
</syntaxhighlight>
</source>
 
may be interpreted as follows: ''f'' drops the preceding whitespace, and reverses the string. ''f'' is then again applied to its own output. Note that the type signature (the second line) is optional.
Line 2,893 ⟶ 3,334:
The trim algorithm in [[J (programming language)|J]] is a [[functional programming|functional]] description:
 
<sourcesyntaxhighlight lang="Jj">
trim =. #~ [: (+./\ *. +./\.) ' '&~:
</syntaxhighlight>
</source>
 
That is: filter (<code>#~</code>) for non-space characters (<code>' '&~:</code>) between leading (<code>+./\</code>) and (<code>*.</code>) trailing (<code>+./\.</code>) spaces.
Line 2,902 ⟶ 3,343:
There is a built-in trim function in JavaScript 1.8.1 (Firefox 3.5 and later), and the ECMAScript 5 standard. In earlier versions it can be added to the String object's prototype as follows:
 
<sourcesyntaxhighlight lang="javascript">
String.prototype.trim = function() {
return this.replace(/^\s+/g, "").replace(/\s+$/g, "");
};
</syntaxhighlight>
</source>
 
====Perl====
Line 2,912 ⟶ 3,353:
 
Example:
<sourcesyntaxhighlight lang="perl">
$string =~ s/^\s+//; # remove leading whitespace
$string =~ s/\s+$//; # remove trailing whitespace
</sourcesyntaxhighlight>
or:
<sourcesyntaxhighlight lang="perl">
$string =~ s/^\s+|\s+$//g ; # remove both leading and trailing whitespace
</sourcesyntaxhighlight>
These examples modify the value of the original variable <code>$string</code>.
 
Also available for Perl is '''StripLTSpace''' in <code>String::Strip</code> from [[CPAN]].
 
There are, however, two functions that are commonly used to strip whitespace from the end of strings, <code>chomp</code> and <code>chop</code>:
* <code>[http://perldoc.perl.org/functions/chop.html chop]</code> removes the last character from a string and returns it.
* <code>[http://perldoc.perl.org/functions/chomp.html chomp]</code> removes the trailing newline character(s) from a string if present. (What constitutes a newline is [http://perldoc.perl.org/perlvar.html $INPUT_RECORD_SEPARATOR] dependent).
 
In [[PerlRaku 6(programming language)|Raku]], the upcoming majorsister revisionlanguage of the languagePerl, strings have a <code>trim</code> method.
 
Example:
<sourcesyntaxhighlight lang="perlperl6">
$string = $string.trim; # remove leading and trailing whitespace
$string .= trim; # same thing
</sourcesyntaxhighlight>
 
====Tcl====
Line 2,941 ⟶ 3,382:
Example of trimming vowels:
 
<sourcesyntaxhighlight lang="tcl">
set string onomatopoeia
set trimmed [string trim $string aeiou] ;# result is nomatop
set r_trimmed [string trimright $string aeiou] ;# result is onomatop
set l_trimmed [string trimleft $string aeiou] ;# result is nomatopoeia
</syntaxhighlight>
</source>
 
====XSLT====
Line 2,952 ⟶ 3,393:
 
Example:
<sourcesyntaxhighlight lang="xml">
<xsl:variable name='trimmed'>
<xsl:value-of select='normalize-space(string)'/>
</xsl:variable>
</syntaxhighlight>
</source>
XSLT 2.0 includes regular expressions, providing another mechanism to perform string trimming.
 
Line 2,964 ⟶ 3,405:
{{Reflist|refs=
<ref name="at1">the index can be negative, which then indicates the number of places before the end of the string.</ref>
<ref name="at2">the index can '''not''' be negative, use '''*-N''' where N indicate the number of places before the end of the string.</ref>
 
<ref name="substr2">''<code>startpos</code>'' can be negative, which indicates to start that number of places before the end of the string.</ref>
<ref name="substr3">''<code>endpos</code>'' can be negative, which indicates to end that number of places before the end of the string.</ref>
<ref name="substr4">''<code>numChars</code>'' can be negative, which indicates to end that number of places before the end of the string.</ref>
<ref name="substr5">''<code>startpos</code>'' can '''not''' be negative, use ''* - startpos'' to indicate to start that number of places before the end of the string.</ref>
<ref name="substr6">''<code>numChars</code>'' can '''not''' be negative, use ''* - numChars'' to indicate to end that number of places before the end of the string.</ref>
}}
 
==External links==
{{External links|date=August 2013}}
*[http://perldoc.perl.org/index-functions-by-cat.html#Functions-for-SCALARs-or-strings Perl String Functions]
*[https://docs.python.org/2/library/stdtypes.html#string-methods Python 2 String Methods]
*[https://docs.python.org/3.3/library/stdtypes.html#string-methods Python 3 String Methods]
*[http://srfi.schemers.org/srfi-13/srfi-13.html Scheme String Procedures]
*[http://www.erlang.org/doc/man/string.html Erlang String Functions]
*[http://msdn2.microsoft.com/en-us/library/system.string.aspx .NET String Methods and Properties]
*[http://www.ruby-doc.org/core-1.8.7/classes/String.html Ruby String Class]
*[http://www.php.net/manual/en/ref.strings.php PHP String functions]
*{{javadoc:SE|java/lang|String|package=java.lang}} members
*[http://haskell.org/ghc/docs/latest/html/libraries/ Haskell Hierarchical Libraries]
*[http://dlang.org/arrays.html Arrays in D (in D strings are regular arrays)]
*[http://www.digitalmars.com/d/2.0/phobos/std_string.html std.string from Phobos (D standard library)]
*[http://www.lua.org/manual/5.1/manual.html#5.4 Lua String Functions]
*[http://caml.inria.fr/pub/docs/manual-ocaml/libref/String.html OCaml String module]
*[http://cl-cookbook.sourceforge.net/strings.html Common Lisp String manipulation]
*[http://www.freebasic.net/wiki/wikka.php?wakka=CatPgString FreeBASIC String Functions]
*[http://reference.wolfram.com/mathematica/guide/StringManipulation.html Reference.wolfram.com]
*[http://www.tcl.tk/man/tcl/TclCmd/string.htm Tcl reference for string commands]
 
[[Category:Programming language comparisons|*String functions]]
[[Category:String (computer science)|Programming language comparison]]
[[Category:Articles with example Python (programming language) code]]