# Strings¶

In this chapter we are going to learn about strings creation and manipulation.

## String Literals¶

Syntax:

```cStr = "This is a string"
cStr2 = 'Another string'
cStr3 = :JustAnotherString
cStr4 = `Yet "another" 'string' ! `
```

## Get String Length¶

We can get the string length (letters count inside a string) using the len() function

Syntax:

```len(string) ---> string length
```

Example:

```cStr = "How are you?"
see cStr + nl
see "String size : " + len(cStr) + nl
```

## Convert Letters Case¶

Syntax:

```lower(string) ---> convert string letters to lower case
upper(string) ---> convert string letters to UPPER case
```

Example:

```cStr = "Welcome To The Ring Programming Language"
see cStr + nl + upper(cStr) + nl + lower(cStr)
```

## Access String Letters¶

We can access a letter inside a string by the letter index

Syntax:

```string[index] ---> get string letter
string[index] = letter  # set string letter
```

Example:

```# print user name letter by letter (each letter in new line)

See "Hello, Enter your name : " give cName
for x = 1 to len(cName)
see nl + cName[x]
next
```

We can use for in to get string letters.

Example:

```# print user name letter by letter (each letter in new line)

See "Hello, Enter your name : " give cName
for x in cName
see nl + x
next
```

We can modify the string letters

Example:

```# convert the first letter to UPPER case

See "Enter your name : " give cName
cName = upper(cName)
see "Hello " + cName
```

## Left() Function¶

We can get a specified number of characters from a string using the Left() function.

The starting position is 1.

Syntax:

```Left(string,count)
```

Example:

```see left("Hello World!",5) # print Hello
```

## Right() Function¶

We can get a specified number of characters from a string using the Right() function.

The starting position is the last character on the right.

Syntax:

```Right(string,count)
```

Example:

```see Right("Hello World!",6) # print World!
```

## Trim() Function¶

We can remove all leading and trailing spaces from a string using the Trim() function.

Syntax:

```trim(string)
```

Example:

```cMsg = "     Welcome      "
see trim(cMsg)                  # print Welcome
```

## Copy() Function¶

We can duplicate a string more than one time using the copy() function.

Syntax:

```copy(string,nCount) ---> string replicated nCount times
```

Example

```see copy("***hello***",3) # print ***hello******hello******hello***
```

## Lines() Function¶

We can count the number of lines inside a string using the Lines() function.

Syntax:

```lines(string) ---> Number of lines inside the string
```

Example:

```cStr = "Hello
How are you?
are you fine?"
see lines(cStr)         # print 3
```

## Substr() Function¶

We can work on sub strings inside a string using the substr() function. Using Substr() we can

• Find substring

• Get substring from position to end

• Get Number of characters from position

• Transform Substring To Another Substring

## Find substring¶

Syntax:

```substr(string,substring)  ---> the starting position of substring in string
```

Example:

```cStr = "Welcome to the Ring programming language"
see substr(cStr,"Ring")         # print 16
```

## Get substring from position to end¶

Syntax:

```substr(string,position)  ---> Get substring starting from position to end
```

Example:

```cStr = "Welcome to the Ring programming language"
nPos = substr(cStr,"Ring")      # nPos = 16
see substr(cStr,nPos)           # print Ring programming language
```

## Get Number of Characters From Position¶

Syntax:

```substr(string,position,count)  ---> Get characters starting from position
```

Example:

```cStr = "Welcome to the Ring programming language"
nPos = substr(cStr,"Ring")      # nPos = 16
see substr(cStr,nPos,4)         # print Ring
```

## Transform Substring To Another Substring¶

Syntax:

```substr(string,substring,newsubstring)  ---> Transformed string (Match case)
substr(string,substring,newsubstring,1)  ---> Transformed string (Ignore case)
```

Example:

```cStr = "Welcome to the New programming language"
see substr(cStr,"New","Ring") + nl  # print Welcome to the Ring programming language
see substr(cStr,"new","Ring",1)+ nl # print Welcome to the Ring programming language
```

## strcmp() Function¶

We can compare between two strings using the strcmp() function.

Syntax:

```strcmp(cString1,cString2) ---> value = 0 if cString1 = cString2
value < 0 if cString1 < cString2
value > 0 if cString1 > cString2
```

Example:

```see strcmp("hello","hello") + nl +
strcmp("abc","bcd") + nl +
strcmp("bcd","abc") + nl
```

Output:

```0
-1
1
```

## str2list() and list2str() Functions¶

We can convert string lines to list items using the str2list() function. Also we can convert the list to a string using list2str() function.

Syntax:

```str2list(string) ---> list contains the string lines
list2str(list)   ---> string contains the list items
```

Example:

```/* output:
** Items : 4
** Item : Hello
** Item : How are you ?
** Item : are you fine ?
** Item : ok
** list2Str result = Hello
** How are you ?
** are you fine ?
** ok
** Done
*/

mystr = "Hello
How are you ?
are you fine ?
ok"

mylist = str2list(mystr)
see "Items : " + len(mylist) + nl

for x in mylist
see "Item : " + x + nl
next

newstr = list2str(mylist)
see "list2Str result = " + newstr

if mystr = newstr
see nl + "Done"
else
see nl + "Error!"
ok
```

## Merge binary characters¶

From Ring 1.0 we can create binary strings and do operations on these strings.

Starting from Ring 1.8, we can get individual characters from these strings and merge them together using the ‘+’ operator.

Example:

```cStr = "Welcome"
? cstr + cstr + cStr
v = cstr + cstr + cStr
? v
? len(v)
c1 = cStr
? c1
aList = [1,2,3]
cStr = ""
for item in aList
cStr += int2bytes(item)
next
? "All String"
? len(cStr)
? "First Part"
n1 = cStr + cStr + cStr + cStr
? len(n1)
? "Second Part"
n2 = cStr + cStr + cStr + cStr
? len(n2)
? "Third Part"
n3 = cStr + cStr + cStr + cStr
? len(n3)
? "All String"
cString = cStr + cStr + cStr + cStr +
cStr + cStr + cStr + cStr +
cStr + cStr + cStr + cStr
? len(cString)
? ascii(cStr)
? len(cStr)
```

Output:

```Weo
Weo
3
W
All String
12
First Part
4
Second Part
4       
Third Part
4
All String
12
1
1
```