String Character Length

From Rosetta Code
Revision as of 02:24, 20 August 2007 by rosettacode>SdqZt5

french kiss dvd libri di cucina mixer audio-video amd duron ventole www foto gratis www nokia immagini sulla turchia picchiaduro psp videogiochi gonzaga (mantova) riassunti verga bellenden, william ufficio vercelli scarica suonerie ommitel it ospedale rizzoli bologna googfle fidanzata amico grosseto trans poliziotto, solitudine e rabbia barbie magico salone di bellezza ad ware how deep is yakumo 67x aeg 48380 domenica bestiale di fabio concato driver for motorola v220 classrooms head radical liquidmetal melissa 18 dlt back-up e accessori w w w cameracafe it microsoft digital media pro keyboard roba che scotta la perla store marmisti bruce springsteen. video anthology 1978-88 pentium 4 socket 478 3 2 ghz torino roma ragazza vita segreta di una diciottenne football manager gli ultimi giorni max speziali code keys viaccess seca nagravision real book nuova officine tessili san sperate hp scanjet 5530c usb livorno il simbolo del sesso fashion show clip printer dock 6000 bon jovi in these arms battle2 antenna d-sail marica yo marica tu marica quien marica libreria ibis www biancaluna com crociera nilo vacanze ram cisco 1700 volo basso costo mariah carey porno foto mina don t tim sms gratis daniela mercury foppapedretti mary naturale golf 3.2 luci a sa siro moto recapiti liquido campeggio come si installa dezful sborra negli slip oubritenga sito ufficiale italiano per wolverine cassino ram full brand michael j fox enciende mi fuego balla diy surf casting grande punto 1 3 le fate dei fiori la stanza del fliglio monitor plasma hitachi olivetti ofx courtney dive calendario sisley eau de campagne unico 2004 stoccaggio rifiuti carros instint indeo video play back bass tab raffaella carra bobble ice age cucine classiche soluzione shadow of the colossus la 2 gurra mondiale malawi peugeot sw creative zen micro arancione amstrad tv 5 qui a le droit dub optika www portobello it cavo usb stampanti pino daniele -project dimmi di no optin email marketing mezzoforte quotazioni multipla motori graupner bmw 4 serie batterie z300 autoradio mp3 slot il dito nella piaga crane, hart franco simone mike buongiorno sorelline ricettario bertolini calendario ilary blasi stampanti laser colore a4 samsung pellicola vetri duncan i believe my heart keys viaaccess 007c00 putas borrachas plasma philips 42 roberta giarusso nuda ventole pc malevil tommasini hotel tamil songs monitor benq 937 legacoopbund lorna papi chulo nikon 70 200 2 8 aria mesh puma calciatore stranieri torna backyard wrestling c18 dragonball x videoclip eifel 65 barry white cd storia festa donna batteria cordless sagem harry potter soundtrack kit auto altoparlanti canon fotografia aquatica online castrazione some girl fattoria maremmana acqua fredda www provini it donne inculate da cani trucchi per spyro 3 www sillyrabbit com dj600v album foto matrimonio vietnam hotel telegiornale filmati iraq www concessionario usato it djerba last minute rex rd 1871 da isacco newton lacie 50 gb polski hip hop lego studios harley davidson agriturismo asiago belvedere amalfi tanti giochi sexy penelope miller elementari nude foto gps portatile dainese jet moto club lucca data bank lettore multimedia luomo che uccise il suo carnefice tomi valvonauta verdena manuale maya drops of jupiter train quattro foto e un sondaggio per far cry grazie di esistere ilguerriero immagini e nuovi dettagli per motogp 3 le isole canarie w32 netsky p agricoltura - servizi www milano it soulseek ca kendall, henry way cerco lavoro a catania oroscopo capricorno www bradford it packard bell - store play hard disk di salto

Task
String Character Length
You are encouraged to solve this task according to the task description, using any language you may know.
This task has has been split off from another task. Its programming examples are in need of review to ensure that they fit the requirements of the new task.

In this task, the goal is to find the character length of a string. This means encodings like UTF-8 need to be handled properly, as there is not necessarily a one-to-one relationship between bytes and characters.

For byte length, see String Byte Length.

ActionScript

myStrVar.length()

Ada

Compiler: GCC 4.1.2

Str    : String := "Hello World";
Length : constant Natural := Str'Length;

AppleScript

count of "Hello World"

AWK

From within any code block:

w=length("Hello, world!")      # static string example
x=length("Hello," s " world!") # dynamic string example
y=length($1)                   # input field example
z=length(s)                    # variable name example

Ad hoc program from command line:

echo "Hello, world!" | awk '{print length($0)}'

From executable script: (prints for every line arriving on stdin)

#!/usr/bin/awk -f
{print"The length of this line is "length($0)}

C

Standard: ANSI C (AKA C89):

Compiler: GCC 3.3.3

 #include <string.h>

 int main(void) 
 {
   const char *string = "Hello, world!";
   size_t length = strlen(string);
          
   return 0;
 }

or by hand:

 int main(void) 
 {
   const char *string = "Hello, world!";
   size_t length = 0;
   
   char *p = (char *) string;
   while (*p   != '\0') length  ;                                         
   
   return 0;
 }

or (for arrays of char only)

 #include <stdlib.h>
 
 int main(void)
 {
   char const s[] = "Hello, world!";
   size_t length = sizeof s - 1;
   
   return 0;
 }

For wide character strings (usually Unicode):

 #include <stdio.h>
 #include <wchar.h>
 
 int main(void) 
 {
    wchar_t *s = L"\x304A\x306F\x3088\x3046"; /* Japanese hiragana ohayou */
    size_t length;
 
    length = wcslen(s);
    printf("Length in characters = %d\n", length);
    printf("Length in bytes      = %d\n", sizeof(s) * sizeof(wchar_t));
    
    return 0;
 }

C

Standard: ISO C (AKA C 98):

Compiler: g 4.0.2

 #include <string> // note: not <string.h>
 
 int main()
 {
   std::string s = "Hello, world!";
   // Always in characters == bytes since sizeof(char) == 1
   std::string::size_type length = s.length(); // option 1: In Characters/Bytes
   std::string::size_type size = s.size();     // option 2: In Characters/Bytes
 }

For wide character strings:

 #include <string>
 
 int main()
 {
   std::wstring s = L"\u304A\u306F\u3088\u3046";
   std::wstring::size_type length = s.length();
}

C#

Platform: .NET Language Version: 1.0

string s = "Hello, world!";
int clength = s.Length;  // In characters
int blength = System.Text.Encoding.GetBytes(s).length; // In Bytes.

Clean

Clean Strings are unboxed arrays of characters. Characters are always a single byte. The function size returns the number of elements in an array.

import StdEnv

strlen :: String -> Int
strlen string = size string 

Start = strlen "Hello, world!"

ColdFusion

  #len("Hello World")#

Common Lisp

  (length "Hello World")

Component Pascal

  LEN("Hello, World!")

E

"Hello World".size()

Forth

The 1994 ANS standard does not have any notion of a particular character encoding, although it distinguishes between character and machine-word addresses. (There is some ongoing work on standardizing an "XCHAR" wordset for dealing with strings in particular encodings such as UTF-8.)

Interpreter: ANS Forth

The following code will count the number of UTF-8 characters in a null-terminated string. It relies on the fact that all bytes of a UTF-8 character except the first have the the binary bit pattern "10xxxxxx".

binary
: utf8  ( str -- str )
  begin
    char 
    dup c@
    11000000 and
    10000000 <>
  until ;
decimal

: count-utf8 ( zstr -- n )
  0
  begin
    swap dup c@
  while
    utf8 
    swap 1 
  repeat drop ;

Haskell

Interpreter: GHCi 6.6, Hugs

Compiler: GHC 6.6

strlen = length "Hello, world!"

IDL

Compiler: any IDL compiler should do

 length = strlen("Hello, world!")

Java

Java encodes strings in UTF-16, which represents each character with one or two 16-bit values. The most commonly used characters are represented by one 16-bit value, while rarer ones like some mathematical symbols are represented by two.

The length method of String objects gives the number of 16-bit values used to encode a string.

String s = "Hello, world!";
int length = s.length();

Since Java 1.5, the actual number of characters can be determined by calling the codePointCount method.

String str = "\uD834\uDD2A"; //U 1D12A
int length1 = str.length(); //2
int length2 = str.codePointCount(0, str.length()); //1

JavaScript

JavaScript encodes strings in UTF-16, which represents each character with one or two 16-bit values. The most commonly used characters are represented by one 16-bit value, while rarer ones like some mathematical symbols are represented by two.

JavaScript has no built-in way to determine how many characters are in a string. However, if the string only contains commonly used characters, the number of characters will be equal to the number of 16-bit values used to represent the characters.

var str1 = "Hello, world!";
var len1 = str1.length; //13

var str2 = "\uD834\uDD2A"; //U 1D12A represented by a UTF-16 surrogate pair
var len2 = str2.length; //2

JudoScript

 //Store length of hello world in length and print it
 . length = "Hello World".length();

Lua

Interpreter: Lua 5.0 or later.

 string="Hello world"
 length=#string

mIRC Scripting Language

Interpreter: mIRC

alias stringlength { echo -a Your Name is: $len($$?="Whats your name") letters long! }

OCaml

Interpreter/Compiler: Ocaml 3.09

String.length "Hello world";;


Perl

Interpreter: Perl any 5.X

 my $length = length "Hello, world!";

PHP

 $length = strlen('Hello, world!');

PL/SQL

DECLARE
  string VARCHAR2( 50 ) := 'Hello, world!';
  stringlength NUMBER;
BEGIN
  stringlength := length( string );
END;

Python

Interpreter: Python 2.4

length = len("The length of this string will be determined")

Ruby

Library: active_support

 require 'active_support'
 puts "Hello World".chars.length

Scheme

 (string-length "Hello world")

Seed7

 length("Hello, world!")

Smalltalk

 string := 'Hello, world!".
 string size.

Standard ML

Interpreter: SML/NJ 110.60, Moscow ML 2.01 (January 2004)

Compiler: MLton 20061107

val strlen = size "Hello, world!";

Tcl

Basic version:

 string length "Hello, world!"

or more elaborately, needs Interpreter any 8.X. Tested on 8.4.12.

 fconfigure stdout -encoding utf-8; #So that Unicode string will print correctly
 set s1 "hello, world"
 set s2 "\u304A\u306F\u3088\u3046"
 puts [format "length of \"%s\" in characters is %d"  $s1 [string length $s1]]
 puts [format "length of \"%s\" in characters is %d"  $s2 [string length $s2]]

UNIX Shell

With external utilities:

Interpreter: any bourne shell

 string='Hello, world!'
 length=`echo -n "$string" | wc -c | tr -dc '0-9'`
 echo $length # if you want it printed to the terminal

With SUSv3 parameter expansion modifier:

Interpreter: Almquist SHell (NetBSD 3.0), Bourne Again SHell 3.2, Korn SHell (5.2.14 99/07/13.2), Z SHell

 string='Hello, world!'
 length="${#string}"
 echo $length # if you want it printed to the terminal


VBScript

Len(string|varname) 

Returns the length of the string|varname Returns null if string|varname is null

xTalk

Interpreter: HyperCard

 put the length of "Hello World"

or

 put the number of characters in "Hello World"