Create Strings
We can use the following ways to create a string:
(1) Use single quotes ('), double quotes ("), or back quotes (`).
A few things to notice:
-
Back quotes are very convenient, but they cannot be used for strings that contain spaces or symbols.
-
To create a string with only one character, we can use back quotes or double quotes but not single quotes. Single quotes around one character create a CHAR instead of STRING.
var1='DolphinDB version 1.1';
var2="This is DolphinDB";
var3=`DolphinDB;
var4=['IBM', 'MSFT', 'GOOG', 'FB'];
var5=["IBM","MSFT","GOOG","FB"];
var6=`IBM`MSFT`GOOG`FB;
typestr(`C);
// output
STRING
typestr("C");
// output
STRING
typestr('C');
// output
CHAR
(2) Use function string.
var7=string(108.5);
(3) Use function format. It applies a specified format to
the given object to produce a string scalar/vector. Depending on the data type of the
input, function format
calls either function decimalFormat or temporalFormat.
t = table(1..100 as id, (1..100 + 2018.01.01) as date, rand(100.0, 100) as price, rand(10000, 100) as qty);
t;
id | date | price | qty |
---|---|---|---|
1 | 2018.01.02 | 70.832104 | 1719 |
2 | 2018.01.03 | 12.22557 | 6229 |
3 | 2018.01.04 | 8.695886 | 1656 |
4 | 2018.01.05 | 24.324535 | 2860 |
5 | 2018.01.06 | 0.443173 | 6874 |
6 | 2018.01.07 | 90.302176 | 3277 |
7 | 2018.01.08 | 78.556843 | 3424 |
8 | 2018.01.09 | 45.836447 | 8636 |
9 | 2018.01.10 | 57.416425 | 707 |
10 | 2018.01.11 | 98.879764 | 2267 |
... | ... | ... | ... |
t1=select id, date.format("MM/dd/yyyy") as date, price.format("00.00") as price, qty.format("#,###") as qty from t;
t1;
id | date | price | qty |
---|---|---|---|
1 | 01/02/2018 | 70.83 | 1,719 |
2 | 01/03/2018 | 12.23 | 6,229 |
3 | 01/04/2018 | 08.70 | 1,656 |
4 | 01/05/2018 | 24.32 | 2,860 |
5 | 01/06/2018 | 00.44 | 6,874 |
6 | 01/07/2018 | 90.30 | 3,277 |
7 | 01/08/2018 | 78.56 | 3,424 |
8 | 01/09/2018 | 45.84 | 8,636 |
9 | 01/10/2018 | 57.42 | 707 |
10 | 01/11/2018 | 98.88 | 2,267 |
... | ... | ... | ... |
t1.date.typestr();
// output
STRING VECTOR
The following table shows the symbols used in the parameter format of function
decimalFormat
. Please check the section Parsing and
Format of Temporal Variables regarding the parameter format of function
temporalFormat
.
Symbol | Meaning | Notes |
---|---|---|
0 | mandatory digit | note 1 |
# | optional digit | note 2 |
. | decimal point | |
% | percent sign | note 3 |
E | separates mantissa and exponent in scientific notation. | note 4 |
, | grouping separator | note 5 |
; | separates the format for positive numbers and the format for negative numbers | note 6 |
-
Note 1: The number of 0s before the decimal point means the minimum number of digits before the decimal point. In comparison, the number of 0s after the decimal point means the number of digits after the decimal point.
decimalFormat(123,"0");
// output
123
decimalFormat(123,"00000");
// output
00123
decimalFormat(123.45,"0");
// output
123
decimalFormat(123.45,"0.0");
// output
123.5
decimalFormat(123.45,"0.000");
// output
123.450
decimalFormat(123.45, ".0");
// output
123.5
decimalFormat(0.45, ".0");
// output
.5
-
Note 2: If 0s and #s are used together after the decimal point, 0s must appear before #s.
decimalFormat(123.45,"0.#");
// output
123.5
decimalFormat(123.45,"0.###");
// output
123.45
decimalFormat(123.456,"0.000###");
// output
123.456
decimalFormat(123.456789110,"0.000###");
// output
123.456789
decimalFormat(0.345, ".##");
// output
.35
-
Note 3: % is always at the end of a format. % and E cannot both appear in a format.
decimalFormat(0.125,"0.00%");
// output
12.50%
decimalFormat(0.125, "#.##%");
// output
12.5%
decimalFormat(0.12567,"#.##%");
// output
12.57%
-
Note 4: "E" is followed by at least one 0 and 0s only.
decimalFormat(1234567.89,"0.##E00");
// output
1.23E06
decimalFormat(0.0000000000123456789,"0.000E0");
// output
1.235E-11
-
Note 5: The grouping separator may only appear at most once in the parameter format. The number of digits between the grouping separator and the decimal point (if the decimal point is used) or the end of the format (if the decimal point is not used) determines the number of digits between grouping separators in the result.
decimalFormat(123456789,"#,###");
// output
123,456,789
decimalFormat(123456789.166,"#,###.##");
// output
123,456,789.17
decimalFormat(123456789.166,"0,000.00");
// output
123,456,789.17
-
Note 6: If we prefer to apply different formats to an object depending on whether it is positive or negative, we can use ";" to seperate the 2 formats.
decimalFormat(123.456,"0.00#E00;(0.00#E00)");
// output
1.235E02
decimalFormat(-123.456,"0.00#E00;(0.00#E00)");
// output
(1.235E02)
(4) Use the escape character.
Use of the escape character | Meaning |
---|---|
\n | new line |
\r | carriage return |
\t | tab |
\ | backslash |
' | single quote |
" | double quote |
x="ABC\\DEF";
x;
// output
ABC\DEF
x="ABC\"D\'EF";
x;
// output
ABC"D'EF
If a string only contains one type of quotes (single quotes or double quotes), the simplest way to create it is to use the other type of quotes.
x="ABC'D'EF";
x;
// output
ABC'D'EF
x='ABC"DEF';
// output
4 x;
ABC"DEF