1string(3) Erlang Module Definition string(3)
2
3
4
6 string - String processing functions.
7
9 This module provides functions for string processing.
10
11 A string in this module is represented by unicode:chardata(), that is,
12 a list of codepoints, binaries with UTF-8-encoded codepoints (UTF-8
13 binaries), or a mix of the two.
14
15 "abcd" is a valid string
16 <<"abcd">> is a valid string
17 ["abcd"] is a valid string
18 <<"abc..åäö"/utf8>> is a valid string
19 <<"abc..åäö">> is NOT a valid string,
20 but a binary with Latin-1-encoded codepoints
21 [<<"abc">>, "..åäö"] is a valid string
22 [atom] is NOT a valid string
23
24 This module operates on grapheme clusters. A grapheme cluster is a
25 user-perceived character, which can be represented by several code‐
26 points.
27
28 "å" [229] or [97, 778]
29 "e̊" [101, 778]
30
31 The string length of "ß↑e̊" is 3, even though it is represented by the
32 codepoints [223,8593,101,778] or the UTF-8 binary
33 <<195,159,226,134,145,101,204,138>>.
34
35 Grapheme clusters for codepoints of class prepend and non-modern (or
36 decomposed) Hangul is not handled for performance reasons in find/3,
37 replace/3, split/2, split/2 and trim/3.
38
39 Splitting and appending strings is to be done on grapheme clusters bor‐
40 ders. There is no verification that the results of appending strings
41 are valid or normalized.
42
43 Most of the functions expect all input to be normalized to one form,
44 see for example unicode:characters_to_nfc_list/1.
45
46 Language or locale specific handling of input is not considered in any
47 function.
48
49 The functions can crash for non-valid input strings. For example, the
50 functions expect UTF-8 binaries but not all functions verify that all
51 binaries are encoded correctly.
52
53 Unless otherwise specified the return value type is the same as the
54 input type. That is, binary input returns binary output, list input
55 returns a list output, and mixed input can return a mixed output.
56
57 1> string:trim(" sarah ").
58 "sarah"
59 2> string:trim(<<" sarah ">>).
60 <<"sarah">>
61 3> string:lexemes("foo bar", " ").
62 ["foo","bar"]
63 4> string:lexemes(<<"foo bar">>, " ").
64 [<<"foo">>,<<"bar">>]
65
66 This module has been reworked in Erlang/OTP 20 to handle unicode:char‐
67 data() and operate on grapheme clusters. The old functions that only
68 work on Latin-1 lists as input are still available but should not be
69 used, they will be deprecated in a future release.
70
72 direction() = leading | trailing
73
74 grapheme_cluster() = char() | [char()]
75
76 A user-perceived character, consisting of one or more code‐
77 points.
78
80 casefold(String :: unicode:chardata()) -> unicode:chardata()
81
82 Converts String to a case-agnostic comparable string. Function
83 casefold/1 is preferred over lowercase/1 when two strings are to
84 be compared for equality. See also equal/4.
85
86 Example:
87
88 1> string:casefold("Ω and ẞ SHARP S").
89 "ω and ss sharp s"
90
91 chomp(String :: unicode:chardata()) -> unicode:chardata()
92
93 Returns a string where any trailing \n or \r\n have been removed
94 from String.
95
96 Example:
97
98 182> string:chomp(<<"\nHello\n\n">>).
99 <<"\nHello">>
100 183> string:chomp("\nHello\r\r\n").
101 "\nHello\r"
102
103 equal(A, B) -> boolean()
104
105 equal(A, B, IgnoreCase) -> boolean()
106
107 equal(A, B, IgnoreCase, Norm) -> boolean()
108
109 Types:
110
111 A = B = unicode:chardata()
112 IgnoreCase = boolean()
113 Norm = none | nfc | nfd | nfkc | nfkd
114
115 Returns true if A and B are equal, otherwise false.
116
117 If IgnoreCase is true the function does casefolding on the fly
118 before the equality test.
119
120 If Norm is not none the function applies normalization on the
121 fly before the equality test. There are four available normal‐
122 ization forms: nfc, nfd, nfkc, and nfkd.
123
124 By default, IgnoreCase is false and Norm is none.
125
126 Example:
127
128 1> string:equal("åäö", <<"åäö"/utf8>>).
129 true
130 2> string:equal("åäö", unicode:characters_to_nfd_binary("åäö")).
131 false
132 3> string:equal("åäö", unicode:characters_to_nfd_binary("ÅÄÖ"), true, nfc).
133 true
134
135 find(String, SearchPattern) -> unicode:chardata() | nomatch
136
137 find(String, SearchPattern, Dir) -> unicode:chardata() | nomatch
138
139 Types:
140
141 String = SearchPattern = unicode:chardata()
142 Dir = direction()
143
144 Removes anything before SearchPattern in String and returns the
145 remainder of the string or nomatch if SearchPattern is not
146 found. Dir, which can be leading or trailing, indicates from
147 which direction characters are to be searched.
148
149 By default, Dir is leading.
150
151 Example:
152
153 1> string:find("ab..cd..ef", ".").
154 "..cd..ef"
155 2> string:find(<<"ab..cd..ef">>, "..", trailing).
156 <<"..ef">>
157 3> string:find(<<"ab..cd..ef">>, "x", leading).
158 nomatch
159 4> string:find("ab..cd..ef", "x", trailing).
160 nomatch
161
162 is_empty(String :: unicode:chardata()) -> boolean()
163
164 Returns true if String is the empty string, otherwise false.
165
166 Example:
167
168 1> string:is_empty("foo").
169 false
170 2> string:is_empty(["",<<>>]).
171 true
172
173 length(String :: unicode:chardata()) -> integer() >= 0
174
175 Returns the number of grapheme clusters in String.
176
177 Example:
178
179 1> string:length("ß↑e̊").
180 3
181 2> string:length(<<195,159,226,134,145,101,204,138>>).
182 3
183
184 lexemes(String :: unicode:chardata(),
185 SeparatorList :: [grapheme_cluster()]) ->
186 [unicode:chardata()]
187
188 Returns a list of lexemes in String, separated by the grapheme
189 clusters in SeparatorList.
190
191 Notice that, as shown in this example, two or more adjacent sep‐
192 arator graphemes clusters in String are treated as one. That is,
193 there are no empty strings in the resulting list of lexemes. See
194 also split/3 which returns empty strings.
195
196 Notice that [$\r,$\n] is one grapheme cluster.
197
198 Example:
199
200 1> string:lexemes("abc de̊fxxghix jkl\r\nfoo", "x e" ++ [[$\r,$\n]]).
201 ["abc","de̊f","ghi","jkl","foo"]
202 2> string:lexemes(<<"abc de̊fxxghix jkl\r\nfoo"/utf8>>, "x e" ++ [$\r,$\n]).
203 [<<"abc">>,<<"de̊f"/utf8>>,<<"ghi">>,<<"jkl\r\nfoo">>]
204
205 lowercase(String :: unicode:chardata()) -> unicode:chardata()
206
207 Converts String to lowercase.
208
209 Notice that function casefold/1 should be used when converting a
210 string to be tested for equality.
211
212 Example:
213
214 2> string:lowercase(string:uppercase("Michał")).
215 "michał"
216
217 next_codepoint(String :: unicode:chardata()) ->
218 maybe_improper_list(char(), unicode:chardata()) |
219 {error, unicode:chardata()}
220
221 Returns the first codepoint in String and the rest of String in
222 the tail. Returns an empty list if String is empty or an {error,
223 String} tuple if the next byte is invalid.
224
225 Example:
226
227 1> string:next_codepoint(unicode:characters_to_binary("e̊fg")).
228 [101|<<"̊fg"/utf8>>]
229
230 next_grapheme(String :: unicode:chardata()) ->
231 maybe_improper_list(grapheme_cluster(),
232 unicode:chardata()) |
233 {error, unicode:chardata()}
234
235 Returns the first grapheme cluster in String and the rest of
236 String in the tail. Returns an empty list if String is empty or
237 an {error, String} tuple if the next byte is invalid.
238
239 Example:
240
241 1> string:next_grapheme(unicode:characters_to_binary("e̊fg")).
242 ["e̊"|<<"fg">>]
243
244 nth_lexeme(String, N, SeparatorList) -> unicode:chardata()
245
246 Types:
247
248 String = unicode:chardata()
249 N = integer() >= 0
250 SeparatorList = [grapheme_cluster()]
251
252 Returns lexeme number N in String, where lexemes are separated
253 by the grapheme clusters in SeparatorList.
254
255 Example:
256
257 1> string:nth_lexeme("abc.de̊f.ghiejkl", 3, ".e").
258 "ghi"
259
260 pad(String, Length) -> unicode:charlist()
261
262 pad(String, Length, Dir) -> unicode:charlist()
263
264 pad(String, Length, Dir, Char) -> unicode:charlist()
265
266 Types:
267
268 String = unicode:chardata()
269 Length = integer()
270 Dir = direction() | both
271 Char = grapheme_cluster()
272
273 Pads String to Length with grapheme cluster Char. Dir, which can
274 be leading, trailing, or both, indicates where the padding
275 should be added.
276
277 By default, Char is $\s and Dir is trailing.
278
279 Example:
280
281 1> string:pad(<<"He̊llö"/utf8>>, 8).
282 [<<72,101,204,138,108,108,195,182>>,32,32,32]
283 2> io:format("'~ts'~n",[string:pad("He̊llö", 8, leading)]).
284 3> io:format("'~ts'~n",[string:pad("He̊llö", 8, both)]).
285
286 prefix(String :: unicode:chardata(), Prefix :: unicode:chardata()) ->
287 nomatch | unicode:chardata()
288
289 If Prefix is the prefix of String, removes it and returns the
290 remainder of String, otherwise returns nomatch.
291
292 Example:
293
294 1> string:prefix(<<"prefix of string">>, "pre").
295 <<"fix of string">>
296 2> string:prefix("pre", "prefix").
297 nomatch
298
299 replace(String, SearchPattern, Replacement) ->
300 [unicode:chardata()]
301
302 replace(String, SearchPattern, Replacement, Where) ->
303 [unicode:chardata()]
304
305 Types:
306
307 String = SearchPattern = Replacement = unicode:chardata()
308 Where = direction() | all
309
310 Replaces SearchPattern in String with Replacement. Where,
311 default leading, indicates whether the leading, the trailing or
312 all encounters of SearchPattern are to be replaced.
313
314 Can be implemented as:
315
316 lists:join(Replacement, split(String, SearchPattern, Where)).
317
318 Example:
319
320 1> string:replace(<<"ab..cd..ef">>, "..", "*").
321 [<<"ab">>,"*",<<"cd..ef">>]
322 2> string:replace(<<"ab..cd..ef">>, "..", "*", all).
323 [<<"ab">>,"*",<<"cd">>,"*",<<"ef">>]
324
325 reverse(String :: unicode:chardata()) -> [grapheme_cluster()]
326
327 Returns the reverse list of the grapheme clusters in String.
328
329 Example:
330
331 1> Reverse = string:reverse(unicode:characters_to_nfd_binary("ÅÄÖ")).
332 [[79,776],[65,776],[65,778]]
333 2> io:format("~ts~n",[Reverse]).
334 ÖÄÅ
335
336 slice(String, Start) -> Slice
337
338 slice(String, Start, Length) -> Slice
339
340 Types:
341
342 String = unicode:chardata()
343 Start = integer() >= 0
344 Length = infinity | integer() >= 0
345 Slice = unicode:chardata()
346
347 Returns a substring of String of at most Length grapheme clus‐
348 ters, starting at position Start.
349
350 By default, Length is infinity.
351
352 Example:
353
354 1> string:slice(<<"He̊llö Wörld"/utf8>>, 4).
355 <<"ö Wörld"/utf8>>
356 2> string:slice(["He̊llö ", <<"Wörld"/utf8>>], 4,4).
357 "ö Wö"
358 3> string:slice(["He̊llö ", <<"Wörld"/utf8>>], 4,50).
359 "ö Wörld"
360
361 split(String, SearchPattern) -> [unicode:chardata()]
362
363 split(String, SearchPattern, Where) -> [unicode:chardata()]
364
365 Types:
366
367 String = SearchPattern = unicode:chardata()
368 Where = direction() | all
369
370 Splits String where SearchPattern is encountered and return the
371 remaining parts. Where, default leading, indicates whether the
372 leading, the trailing or all encounters of SearchPattern will
373 split String.
374
375 Example:
376
377 0> string:split("ab..bc..cd", "..").
378 ["ab","bc..cd"]
379 1> string:split(<<"ab..bc..cd">>, "..", trailing).
380 [<<"ab..bc">>,<<"cd">>]
381 2> string:split(<<"ab..bc....cd">>, "..", all).
382 [<<"ab">>,<<"bc">>,<<>>,<<"cd">>]
383
384 take(String, Characters) -> {Leading, Trailing}
385
386 take(String, Characters, Complement) -> {Leading, Trailing}
387
388 take(String, Characters, Complement, Dir) -> {Leading, Trailing}
389
390 Types:
391
392 String = unicode:chardata()
393 Characters = [grapheme_cluster()]
394 Complement = boolean()
395 Dir = direction()
396 Leading = Trailing = unicode:chardata()
397
398 Takes characters from String as long as the characters are mem‐
399 bers of set Characters or the complement of set Characters. Dir,
400 which can be leading or trailing, indicates from which direction
401 characters are to be taken.
402
403 Example:
404
405 5> string:take("abc0z123", lists:seq($a,$z)).
406 {"abc","0z123"}
407 6> string:take(<<"abc0z123">>, lists:seq($0,$9), true, leading).
408 {<<"abc">>,<<"0z123">>}
409 7> string:take("abc0z123", lists:seq($0,$9), false, trailing).
410 {"abc0z","123"}
411 8> string:take(<<"abc0z123">>, lists:seq($a,$z), true, trailing).
412 {<<"abc0z">>,<<"123">>}
413
414 titlecase(String :: unicode:chardata()) -> unicode:chardata()
415
416 Converts String to titlecase.
417
418 Example:
419
420 1> string:titlecase("ß is a SHARP s").
421 "Ss is a SHARP s"
422
423 to_float(String) -> {Float, Rest} | {error, Reason}
424
425 Types:
426
427 String = unicode:chardata()
428 Float = float()
429 Rest = unicode:chardata()
430 Reason = no_float | badarg
431
432 Argument String is expected to start with a valid text repre‐
433 sented float (the digits are ASCII values). Remaining characters
434 in the string after the float are returned in Rest.
435
436 Example:
437
438 > {F1,Fs} = string:to_float("1.0-1.0e-1"),
439 > {F2,[]} = string:to_float(Fs),
440 > F1+F2.
441 0.9
442 > string:to_float("3/2=1.5").
443 {error,no_float}
444 > string:to_float("-1.5eX").
445 {-1.5,"eX"}
446
447 to_integer(String) -> {Int, Rest} | {error, Reason}
448
449 Types:
450
451 String = unicode:chardata()
452 Int = integer()
453 Rest = unicode:chardata()
454 Reason = no_integer | badarg
455
456 Argument String is expected to start with a valid text repre‐
457 sented integer (the digits are ASCII values). Remaining charac‐
458 ters in the string after the integer are returned in Rest.
459
460 Example:
461
462 > {I1,Is} = string:to_integer("33+22"),
463 > {I2,[]} = string:to_integer(Is),
464 > I1-I2.
465 11
466 > string:to_integer("0.5").
467 {0,".5"}
468 > string:to_integer("x=2").
469 {error,no_integer}
470
471 to_graphemes(String :: unicode:chardata()) -> [grapheme_cluster()]
472
473 Converts String to a list of grapheme clusters.
474
475 Example:
476
477 1> string:to_graphemes("ß↑e̊").
478 [223,8593,[101,778]]
479 2> string:to_graphemes(<<"ß↑e̊"/utf8>>).
480 [223,8593,[101,778]]
481
482 trim(String) -> unicode:chardata()
483
484 trim(String, Dir) -> unicode:chardata()
485
486 trim(String, Dir, Characters) -> unicode:chardata()
487
488 Types:
489
490 String = unicode:chardata()
491 Dir = direction() | both
492 Characters = [grapheme_cluster()]
493
494 Returns a string, where leading or trailing, or both, Characters
495 have been removed. Dir which can be leading, trailing, or both,
496 indicates from which direction characters are to be removed.
497
498 Default Characters is the set of nonbreakable whitespace code‐
499 points, defined as Pattern_White_Space in Unicode Standard Annex
500 #31. By default, Dir is both.
501
502 Notice that [$\r,$\n] is one grapheme cluster according to the
503 Unicode Standard.
504
505 Example:
506
507 1> string:trim("\t Hello \n").
508 "Hello"
509 2> string:trim(<<"\t Hello \n">>, leading).
510 <<"Hello \n">>
511 3> string:trim(<<".Hello.\n">>, trailing, "\n.").
512 <<".Hello">>
513
514 uppercase(String :: unicode:chardata()) -> unicode:chardata()
515
516 Converts String to uppercase.
517
518 See also titlecase/1.
519
520 Example:
521
522 1> string:uppercase("Michał").
523 "MICHAŁ"
524
526 Here follows the function of the old API. These functions only work on
527 a list of Latin-1 characters.
528
529 Note:
530 The functions are kept for backward compatibility, but are not recom‐
531 mended. They will be deprecated in a future release.
532
533 Any undocumented functions in string are not to be used.
534
535
537 centre(String, Number) -> Centered
538
539 centre(String, Number, Character) -> Centered
540
541 Types:
542
543 String = Centered = string()
544 Number = integer() >= 0
545 Character = char()
546
547 Returns a string, where String is centered in the string and
548 surrounded by blanks or Character. The resulting string has
549 length Number.
550
551 This function is obsolete. Use pad/3.
552
553 chars(Character, Number) -> String
554
555 chars(Character, Number, Tail) -> String
556
557 Types:
558
559 Character = char()
560 Number = integer() >= 0
561 Tail = String = string()
562
563 Returns a string consisting of Number characters Character.
564 Optionally, the string can end with string Tail.
565
566 This function is obsolete. Use lists:duplicate/2.
567
568 chr(String, Character) -> Index
569
570 Types:
571
572 String = string()
573 Character = char()
574 Index = integer() >= 0
575
576 Returns the index of the first occurrence of Character in
577 String. Returns 0 if Character does not occur.
578
579 This function is obsolete. Use find/2.
580
581 concat(String1, String2) -> String3
582
583 Types:
584
585 String1 = String2 = String3 = string()
586
587 Concatenates String1 and String2 to form a new string String3,
588 which is returned.
589
590 This function is obsolete. Use [String1, String2] as Data argu‐
591 ment, and call unicode:characters_to_list/2 or unicode:charac‐
592 ters_to_binary/2 to flatten the output.
593
594 copies(String, Number) -> Copies
595
596 Types:
597
598 String = Copies = string()
599 Number = integer() >= 0
600
601 Returns a string containing String repeated Number times.
602
603 This function is obsolete. Use lists:duplicate/2.
604
605 cspan(String, Chars) -> Length
606
607 Types:
608
609 String = Chars = string()
610 Length = integer() >= 0
611
612 Returns the length of the maximum initial segment of String,
613 which consists entirely of characters not from Chars.
614
615 This function is obsolete. Use take/3.
616
617 Example:
618
619 > string:cspan("\t abcdef", " \t").
620 0
621
622 join(StringList, Separator) -> String
623
624 Types:
625
626 StringList = [string()]
627 Separator = String = string()
628
629 Returns a string with the elements of StringList separated by
630 the string in Separator.
631
632 This function is obsolete. Use lists:join/2.
633
634 Example:
635
636 > join(["one", "two", "three"], ", ").
637 "one, two, three"
638
639 left(String, Number) -> Left
640
641 left(String, Number, Character) -> Left
642
643 Types:
644
645 String = Left = string()
646 Number = integer() >= 0
647 Character = char()
648
649 Returns String with the length adjusted in accordance with Num‐
650 ber. The left margin is fixed. If length(String) < Number, then
651 String is padded with blanks or Characters.
652
653 This function is obsolete. Use pad/2 or pad/3.
654
655 Example:
656
657 > string:left("Hello",10,$.).
658 "Hello....."
659
660 len(String) -> Length
661
662 Types:
663
664 String = string()
665 Length = integer() >= 0
666
667 Returns the number of characters in String.
668
669 This function is obsolete. Use length/1.
670
671 rchr(String, Character) -> Index
672
673 Types:
674
675 String = string()
676 Character = char()
677 Index = integer() >= 0
678
679 Returns the index of the last occurrence of Character in String.
680 Returns 0 if Character does not occur.
681
682 This function is obsolete. Use find/3.
683
684 right(String, Number) -> Right
685
686 right(String, Number, Character) -> Right
687
688 Types:
689
690 String = Right = string()
691 Number = integer() >= 0
692 Character = char()
693
694 Returns String with the length adjusted in accordance with Num‐
695 ber. The right margin is fixed. If the length of (String) < Num‐
696 ber, then String is padded with blanks or Characters.
697
698 This function is obsolete. Use pad/3.
699
700 Example:
701
702 > string:right("Hello", 10, $.).
703 ".....Hello"
704
705 rstr(String, SubString) -> Index
706
707 Types:
708
709 String = SubString = string()
710 Index = integer() >= 0
711
712 Returns the position where the last occurrence of SubString
713 begins in String. Returns 0 if SubString does not exist in
714 String.
715
716 This function is obsolete. Use find/3.
717
718 Example:
719
720 > string:rstr(" Hello Hello World World ", "Hello World").
721 8
722
723 span(String, Chars) -> Length
724
725 Types:
726
727 String = Chars = string()
728 Length = integer() >= 0
729
730 Returns the length of the maximum initial segment of String,
731 which consists entirely of characters from Chars.
732
733 This function is obsolete. Use take/2.
734
735 Example:
736
737 > string:span("\t abcdef", " \t").
738 5
739
740 str(String, SubString) -> Index
741
742 Types:
743
744 String = SubString = string()
745 Index = integer() >= 0
746
747 Returns the position where the first occurrence of SubString
748 begins in String. Returns 0 if SubString does not exist in
749 String.
750
751 This function is obsolete. Use find/2.
752
753 Example:
754
755 > string:str(" Hello Hello World World ", "Hello World").
756 8
757
758 strip(String :: string()) -> string()
759
760 strip(String, Direction) -> Stripped
761
762 strip(String, Direction, Character) -> Stripped
763
764 Types:
765
766 String = Stripped = string()
767 Direction = left | right | both
768 Character = char()
769
770 Returns a string, where leading or trailing, or both, blanks or
771 a number of Character have been removed. Direction, which can be
772 left, right, or both, indicates from which direction blanks are
773 to be removed. strip/1 is equivalent to strip(String, both).
774
775 This function is obsolete. Use trim/3.
776
777 Example:
778
779 > string:strip("...Hello.....", both, $.).
780 "Hello"
781
782 sub_string(String, Start) -> SubString
783
784 sub_string(String, Start, Stop) -> SubString
785
786 Types:
787
788 String = SubString = string()
789 Start = Stop = integer() >= 1
790
791 Returns a substring of String, starting at position Start to the
792 end of the string, or to and including position Stop.
793
794 This function is obsolete. Use slice/3.
795
796 Example:
797
798 sub_string("Hello World", 4, 8).
799 "lo Wo"
800
801 substr(String, Start) -> SubString
802
803 substr(String, Start, Length) -> SubString
804
805 Types:
806
807 String = SubString = string()
808 Start = integer() >= 1
809 Length = integer() >= 0
810
811 Returns a substring of String, starting at position Start, and
812 ending at the end of the string or at length Length.
813
814 This function is obsolete. Use slice/3.
815
816 Example:
817
818 > substr("Hello World", 4, 5).
819 "lo Wo"
820
821 sub_word(String, Number) -> Word
822
823 sub_word(String, Number, Character) -> Word
824
825 Types:
826
827 String = Word = string()
828 Number = integer()
829 Character = char()
830
831 Returns the word in position Number of String. Words are sepa‐
832 rated by blanks or Characters.
833
834 This function is obsolete. Use nth_lexeme/3.
835
836 Example:
837
838 > string:sub_word(" Hello old boy !",3,$o).
839 "ld b"
840
841 to_lower(String) -> Result
842
843 to_lower(Char) -> CharResult
844
845 to_upper(String) -> Result
846
847 to_upper(Char) -> CharResult
848
849 Types:
850
851 String = Result = io_lib:latin1_string()
852 Char = CharResult = char()
853
854 The specified string or character is case-converted. Notice that
855 the supported character set is ISO/IEC 8859-1 (also called Latin
856 1); all values outside this set are unchanged
857
858 This function is obsolete use lowercase/1, uppercase/1, title‐
859 case/1 or casefold/1.
860
861 tokens(String, SeparatorList) -> Tokens
862
863 Types:
864
865 String = SeparatorList = string()
866 Tokens = [Token :: nonempty_string()]
867
868 Returns a list of tokens in String, separated by the characters
869 in SeparatorList.
870
871 Example:
872
873 > tokens("abc defxxghix jkl", "x ").
874 ["abc", "def", "ghi", "jkl"]
875
876 Notice that, as shown in this example, two or more adjacent sep‐
877 arator characters in String are treated as one. That is, there
878 are no empty strings in the resulting list of tokens.
879
880 This function is obsolete. Use lexemes/2.
881
882 words(String) -> Count
883
884 words(String, Character) -> Count
885
886 Types:
887
888 String = string()
889 Character = char()
890 Count = integer() >= 1
891
892 Returns the number of words in String, separated by blanks or
893 Character.
894
895 This function is obsolete. Use lexemes/2.
896
897 Example:
898
899 > words(" Hello old boy!", $o).
900 4
901
903 Some of the general string functions can seem to overlap each other.
904 The reason is that this string package is the combination of two ear‐
905 lier packages and all functions of both packages have been retained.
906
907
908
909Ericsson AB stdlib 3.12.1 string(3)