String Character Length: Difference between revisions

From Rosetta Code
Content deleted Content added
Added Tcl. Alphabetized languages a bit.
Alphabetized.
Line 2: Line 2:


In this task, the goal is to find the length of a string.
In this task, the goal is to find the length of a string.

==[[Ada]]==
'''Compiler:''' GCC 4.1.2

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

==[[Common Lisp]]==
(length "Hello World")


==[[C]]==
==[[C]]==
Line 184: Line 193:


put the number of characters in "Hello World"
put the number of characters in "Hello World"

==[[Ada]]==
'''Compiler:''' GCC 4.1.2

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

==[[Common Lisp]]==
(length "Hello World")

Revision as of 20:24, 21 January 2007

Task
String Character Length
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the goal is to find the length of a string.

Ada

Compiler: GCC 4.1.2

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

Common Lisp

  (length "Hello World")

C

Standard: ANSI C (AKA C89):

Compiler: GCC 3.3.3

 #include <string.h>

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

or

 int main(int argc, char ** argv) {
         const char *string = "Hello, world!";
         int length;
         for(length=0; string[length]!='\0'; length++); // for each letter that is not a '\0' adds 
                                                        // one to length's value.
                                                        // '\0' is the string terminator character. 
         
         return 0;
 };

or (terse version of the above)

 int main()
 {
   char const *s = "Hello, world!", *p = s;
   int length = 0;
   while (*p++)
     length++;
   
   return 0;
 }

or (for string literals only)

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

For wide character strings (usually Unicode):

 #include <stdlib.h>
 #include <stdio.h>
 #include <wchar.h>
 int main(int ac, char **av) {
    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));
    exit(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!";
   std::string::size_type length = s.length();
 }

C#

Platform: .NET Language Version: 1.0+

string s = "Hello, world!";
int length = s.Length;

Java

Compiler: any Java compiler should do

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

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

Compiler: mIRC

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

SML

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

Compiler: MLton 20061107

val strlen = size("Hello, world!");

Python

Interpreter: Python 2.4

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

Perl

Interpreter: Perl any 5.X

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

PHP

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

Ruby

 string="Hello world"
 print string.length

Tcl

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


xTalk

Interpreter: HyperCard

 put the length of "Hello World"

or

 put the number of characters in "Hello World"