AviSynth Syntax - String functions

String functions provide common operations on string variables.

These function may not work as expected, if you feed them with utf8 strings. Some function (e.g. UCase, LCase) may not work as expected, if parameter contains national accented characters.

E.g. Strlen of an utf8-encoded string, which contains non-latin or accented national characters may report more length than is visible by human reader.

LCase

LCase(string)

Returns lower case of string.

Examples:

LCase("AviSynth") = "avisynth"

UCase

UCase(string)

Returns upper case of string.

Examples:

UCase("AviSynth") = "AVISYNTH"

StrToUtf8

StrToUtf8(string)

Converts string from ANSI to UTF8.

Note, that since Windows 10 the codepage for non-unicode programs can be set to UTF8 natively. ANSI is meant to be the active code page of the system.

StrFromUtf8

StrFromUtf8(string)

Converts string from UTF8 to ANSI.

Valid on Windows.

Note, that since Windows 10 the codepage for non-unicode programs can be set to UTF8 natively.

StrLen

StrLen(string)

Returns length of string.

Examples:

StrLen("AviSynth") = 8

RevStr

RevStr(string)

Returns string backwards.

Examples:

RevStr("AviSynth") = "htnySivA"

LeftStr

LeftStr(string, int)

Returns first int number of characters.

Examples:

LeftStr("AviSynth", 3) = "Avi"

RightStr

RightStr(string, int)

Returns last int number of characters.

Examples:

RightStr("AviSynth", 5) = "Synth"

MidStr

MidStr(string, int pos [, int length])

Returns substring starting at pos for optional length or to end. pos=1 specifies start.

Examples:

MidStr("AviSynth", 3, 2) = "iS"

FindStr

FindStr(string, substring)

Returns position of substring within string.

Returns 0 if substring is not found.

Examples:

FindStr("AviSynth", "Syn") ## returns 4
FindStr("AviSynth", "SYN") ## returns 0

ReplaceStr

ReplaceStr(string, substring, replacement_string [, bool sig])

Replaces occurrences of substring with replacement_string and returns the result.

bool sig
  • false (the default): search is case sensitive

  • true: search is not case insensitive.

Example:

ReplaceStr("FlipHorizontal", "Horizontal", "Vertical")
ReplaceStr("$a x *", "$a", String(1.5)) ## (a MaskTools expression with argument)
## this latter is more elegant with using "Format"

Avisynth 2.6.x users have other options, such as the user function below, adapted from StrReplace, found here .

# for old systems where ReplaceStr is missing:
function ReplaceStr(string base, string sought, string repstr) {
    pos = FindStr(base, sought)
    return (sought=="" || pos==0) ? base : ReplaceStr(
    \       LeftStr(base, pos-1) + repstr +
    \       MidStr(base, pos+StrLen(sought)),
    \       sought, repstr)
}

Format

Format(formatstring [, value1, value2, ...])

Replaces the in-string placeholders with parameters and returns the result

Parameters can be of any type; each parameter is converted to string beforehand.

string formatstring

unnamed parameter. A string literal with parameter insertion points marked with {}.

value1, value2, etc.

zero or more values which are inserted into the format string one after another

Description:

The format string consists of

  • ordinary characters ( except { and } ), which are copied unchanged to the output,

  • escape sequences: double "{" ("{{") and double "}" ("}}"), which are replaced with "{" and "}" respectively in the output

  • replacement placeholder fields.

Each replacement field has the following format:

introductory { character;
(optional)
    arg-id, a non-negative number;
  or:
    identifier which is used for lookup named parameters. (when values are given in ["name", value] construction)
  or:
    valid AviSynth variable name
final } character.
  • If arg-id is a number it specifies the index of the argument in args whose value is to be used for formatting;

  • Index is zero based.

  • If arg-id is string then it serves as a lookup key from the parameters list given as an array ["name",value] pair.

  • If not found, then arg-id is searched among Avisynth variables.

  • If arg-id is omitted, the arguments are used in order.

  • Mixing manual and automatic indexing is not an error.

Notes

It is not an error to provide more arguments than the format string requires:

Format("{} {}!", "Hello", "world", "something") # OK, produces "Hello world!"

Examples:

# By Avisynth variable
max_pixel_value = 255
SubTitle(Format("max={max_pixel_value}!")) # no format value given, inserts directly from variable
# result: "max=255!"
# By index:
SubTitle(Format("{0} {1} {0}", "Home", "sweet"))
# result: "Home sweet Home"
# by order:
SubTitle(Format("{} {} {}", "AviSynth", "+", 2020))
# result: "AviSynth + 2020"
# by Array name-value pairs:
SubTitle(Format("maximum={max} minimum={min} max again {max}!", ["max",255], ["min",0]))
# result: ""maximum=255 minimum=0 max again 255!"

FillStr

FillStr(int [, string]) Fills a string.

When int > 1 it concatenates the string int times. String is space by default.

Examples:

FillStr(1, "AviSynth") = "AviSynth"
FillStr(2, "AviSynth") = "AviSynthAviSynth"

StrCmp

StrCmp(string, string)

Compares two character strings. The comparison is case-sensitive. If the first string is less than the second string, the return value is negative. If it's greater, the return value is positive. If they are equal, the return value is zero. (The actual value seems to be host operating system dependent so it can't be relied upon.)

Examples:

StrCmp("AviSynth", "AviSynth") = 0 # strings are equal.
StrCmp("AviSynth", "Avisynth") != 0 # strings are not equal.

StrCmpi

StrCmpi(string, string)

Compares two character strings. The comparison is not case-sensitive. If the first string is less than the second string, the return value is negative. If it's greater, the return value is positive. If they are equal, the return value is zero. (The actual value seems to be host operating system dependent so it can't be relied upon.)

Examples:

StrCmpi("AviSynth", "AviSynth") = 0 # strings are equal.
StrCmpi("AviSynth", "Avisynth") = 0 # strings are equal.
StrCmpi("abcz", "abcdefg") != 0 # returns the difference betweeen "z"
and "d" (which is positive).

TrimLeft, TrimRight, TrimAll

TrimLeft(string)
TrimRight(string)
TrimAll(string)

Removes whitespace characters (space, tab, nonbreaking space ) from the left, right, or both ends (respectively) of string.

Chr

Chr(int)

Returns the ASCII character. Note that characters above the ASCII character set (ie above 127) are code page dependent and may render different (visual) results in different systems. This has an importance only for user-supplied localised text messages.

Examples:

Chr(34) returns the quote character
Chr(9) returns the tab  character

Ord

Ord(string)

Gives the ordinal number of the first character of a string.

Examples:

Ord("a") = 97
Ord("AviSynth") = Ord("A") = 65
Ord("§") = 167

Time

Time(string)

Returns a string with the current system time formatted as defined by the string. The string may contain any of the codes for output formatting presented below:

Code

Description

%a

%A

Abbreviated weekday name

Full weekday name

%b

%B

Abbreviated month name

Full month name

%c

Date and time representation appropriate for locale

%d

Day of month as decimal number (01 ? 31)

%H

%I

Hour in 24-hour format (00 ? 23)

Hour in 12-hour format (01 ? 12)

%j

Day of year as decimal number (001 ? 366)

%m

Month as decimal number (01 ? 12)

%M

Minute as decimal number (00 ? 59)

%p

Current locale's A.M./P.M. indicator for 12-hour clock

%S

Second as decimal number (00 ? 59)

%U

Week of year as decimal number, with Sunday as first day of week (00 ? 53)

%w

Weekday as decimal number (0 ? 6; Sunday is 0)

%W

Week of year as decimal number, with Monday as first day of week (00 ? 53)

%x

Date representation for current locale

%X

Time representation for current locale

%y

%Y

Year without century, as decimal number (00 ? 99)

Year with century, as decimal number

%z, %Z

Time-zone name or abbreviation; no characters if time zone is unknown

%%

Percent sign

The # flag may prefix any formatting code. In that case, the meaning of the format code is changed as follows:

Code with # flag

Change in meaning

%#a, %#A, %#b, %#B,

%#p, %#X, %#z, %#Z, %#%

No change; # flag is ignored.

%#c

Long date and time representation, appropriate for current locale. For example:
?Tuesday, March 14, 1995, 12:41:29?.

%#x

Long date representation, appropriate to current locale. For example:
?Tuesday, March 14, 1995?.

%#d, %#H, %#I, %#j, %#m, %#M,

%#S, %#U, %#w, %#W, %#y, %#Y

Remove leading zeros (if any).

Changelog

Version

Changes

Avisynth+

Added "Format"
Added "StrToUtf8"
Added "StrFromUtf8"
Added "ReplaceStr"
Added "Format"
Added "TrimLeft", "TrimRight", "TrimAll"

Back to Internal functions.

$Date: 2024/01/08 14:58:00 $