![]() |
ImFusion SDK 4.3
|
Utility functions for working with std::string.
More...
Collaboration diagram for String Processing:Utility functions for working with std::string.
Enumerations | |
| enum | SplitOptions { Default = 0 , AnyOf = 1 << 0 , IgnoreEmptyParts = 1 << 1 , TrimWhitespace = 1 << 2 } |
| Bitflag enumeration for String::split() More... | |
| enum | CaseSensitivity { CaseSensitive = 0 , CaseInsensitive = 1 } |
| Enumeration for levenshteinDistance. | |
Functions | |
| void | replaceAll (std::string &str, std::string_view from, std::string_view to) |
| Replaces all occurrences of from in str with to. | |
| std::string | replaceAllCopy (std::string_view str, std::string_view from, std::string_view to) |
| Returns a copy of str with all occurrences of replaced by to. | |
| void | removeLetters (std::string &str) |
| Removes all alphabetic characters in place. | |
| std::string | fromDurationMs (double durationInMilliseconds) |
| Convert a duration in milliseconds to a human-readable string with days, hours, minutes where applicable. | |
| std::string | fromDouble (double value, std::optional< int > maxDecimals=std::nullopt) |
| Convert a double to a string representation, with a limited max number of decimals. | |
| std::string | ordinal (int num) |
| Convert an integer number to its ordinal number string representation, such as "1st", "2nd", "3rd", "4th", etc. | |
| int | naturalCompare (const std::string &str1, const std::string &str2) |
| Compare two strings according to the natural sort order. | |
| int | levenshteinDistance (const std::string &source, const std::string &target, CaseSensitivity sensitivity=CaseSensitive) |
| Computes the Levenshtein distance (also known as Edit distance) between two strings. | |
Comparison and substring search | |
| bool | iEquals (std::string_view a, std::string_view b) |
| Compares both strings case insensitive, returns true if they are the same (case insensitive) | |
| bool | startsWith (std::string_view str, std::string_view prefix) |
| Checks whether the input string has the given prefix. | |
| bool | iStartsWith (std::string_view str, std::string_view prefix) |
| Checks whether the input string has the given prefix, ignoring case (case-insensitive). | |
| bool | endsWith (std::string_view str, std::string_view suffix) |
| Checks whether the input string has the given suffix. | |
| bool | iEndsWith (std::string_view str, std::string_view suffix) |
| Checks whether the input string has the given suffix, ignoring case (case-insensitive). | |
| bool | contains (std::string_view str, std::string_view substring) |
| Checks whether the input string contains the given substring. | |
| bool | iContains (std::string_view str, std::string_view substring) |
| Checks whether the input string contains the given substring, ignoring case (case-insensitive). | |
| bool | containsAnyOf (std::string_view str, std::string_view characters) |
| Checks whether the input string contains any of the given characters. | |
| bool | iContainsAnyOf (std::string_view str, std::string_view characters) |
| Checks whether the input string contains any of the given characters, ignoring case (case-insensitive). | |
| bool | matchesPattern (std::string_view str, std::string_view pattern) |
Checks if a string matches a pattern containing * and ? wildcards. | |
Remove whitespace at the ends | |
| void | trim (std::string &str, std::string_view whitespace=" \t\f\v\r\n") |
| Removes all leading and trailing occurrences of the characters in whitespace from str in-place. | |
| void | ltrim (std::string &str, std::string_view whitespace=" \t\f\v\r\n") |
| Removes all leading occurrences of the characters in whitespace from str in-place. | |
| void | rtrim (std::string &str, std::string_view whitespace=" \t\f\v\r\n") |
| Removes all trailing occurrences of the characters in whitespace from str in-place. | |
| std::string | trimCopy (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a copy of str with all leading and trailing occurrences of whitespace removed. | |
| std::string | ltrimCopy (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a copy of str with all leading occurrences of the characters in whitespace removed. | |
| std::string | rtrimCopy (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a copy of str with all trailing occurrences of the characters in whitespace removed. | |
| std::string_view | trimRef (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a std::string_view into the input string where all leading and trailing occurrences of whitespace are removed. | |
| std::string_view | ltrimRef (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a std::string_view into the input string where all leading occurrences of whitespace are removed. | |
| std::string_view | rtrimRef (std::string_view str, std::string_view whitespace=" \t\f\v\r\n") |
| Returns a std::string_view into the input string where all trailing occurrences of whitespace are removed. | |
Change capitalization of 7 bit ASCII strings | |
| void | toLower (std::string &input) |
| Convert the input string to lower case characters. | |
| void | toUpper (std::string &input) |
| Convert the input string to upper case characters. | |
| std::string | toLowerCopy (std::string_view input) |
| Convert the input string to lower case characters. | |
| std::string | toUpperCopy (std::string_view input) |
| Convert the input string to upper case characters. | |
Split strings into individual elements and vice-versa | |
| template<typename Container, typename UnaryOperation> | |
| std::string | join (const Container &list, UnaryOperation unary_op, const std::string &sep) |
| Joins the list to a string and separates the elements with sep. | |
| template<typename C> | |
| std::string | join (const C &list, const std::string &sep) |
| Joins the list to a string and separates the elements with sep. | |
| template<typename T> | |
| std::string | join (const std::initializer_list< T > &list, const std::string &sep) |
| Helper methods for initializer lists. | |
| std::string | joinNonEmpty (const std::vector< std::string > &vec, const std::string &sep="") |
| Joins a vector of strings together, interposing a separator (empty by default). | |
| std::vector< std::string > | split (std::string_view input, std::string_view separator, Flags< SplitOptions > splitOptions=SplitOptions::Default) |
| Splits input into substrings based on the given separator and splitOptions. | |
| std::vector< std::string_view > | splitRef (std::string_view input, std::string_view separator, Flags< SplitOptions > splitOptions=SplitOptions::Default) |
| Splits input into substring views based on the given separator and splitOptions. | |
| std::vector< std::string > | splitCamelCase (const std::string &input) |
| Split camel case string into words. | |
| enum SplitOptions |
#include <ImFusion/Core/String.h>
Bitflag enumeration for String::split()
| bool iEquals | ( | std::string_view | a, |
| std::string_view | b ) |
#include <ImFusion/Core/String.h>
Compares both strings case insensitive, returns true if they are the same (case insensitive)
| a | First string to compare |
| b | Second string to compare |
| bool iStartsWith | ( | std::string_view | str, |
| std::string_view | prefix ) |
#include <ImFusion/Core/String.h>
Checks whether the input string has the given prefix, ignoring case (case-insensitive).
| bool iEndsWith | ( | std::string_view | str, |
| std::string_view | suffix ) |
#include <ImFusion/Core/String.h>
Checks whether the input string has the given suffix, ignoring case (case-insensitive).
| bool iContains | ( | std::string_view | str, |
| std::string_view | substring ) |
#include <ImFusion/Core/String.h>
Checks whether the input string contains the given substring, ignoring case (case-insensitive).
| bool iContainsAnyOf | ( | std::string_view | str, |
| std::string_view | characters ) |
#include <ImFusion/Core/String.h>
Checks whether the input string contains any of the given characters, ignoring case (case-insensitive).
| bool matchesPattern | ( | std::string_view | str, |
| std::string_view | pattern ) |
#include <ImFusion/Core/String.h>
Checks if a string matches a pattern containing * and ? wildcards.
This function matches the input string str against the given pattern, where the pattern may contain zero or more wildcard characters. Each * matches any sequence of characters (including the empty sequence). Each ? matches any character exactly once.
| str | The input string to match. |
| pattern | The pattern string, possibly containing * and ? wildcards. |
| void trim | ( | std::string & | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Removes all leading and trailing occurrences of the characters in whitespace from str in-place.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning and the end. |
| void ltrim | ( | std::string & | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Removes all leading occurrences of the characters in whitespace from str in-place.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning. |
| void rtrim | ( | std::string & | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Removes all trailing occurrences of the characters in whitespace from str in-place.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the end. |
| std::string trimCopy | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a copy of str with all leading and trailing occurrences of whitespace removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning and the end. |
| std::string ltrimCopy | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a copy of str with all leading occurrences of the characters in whitespace removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning. |
| std::string rtrimCopy | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a copy of str with all trailing occurrences of the characters in whitespace removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the end. |
| std::string_view trimRef | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a std::string_view into the input string where all leading and trailing occurrences of whitespace are removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning and the end. |
| std::string_view ltrimRef | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a std::string_view into the input string where all leading occurrences of whitespace are removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning and the end. |
| std::string_view rtrimRef | ( | std::string_view | str, |
| std::string_view | whitespace = " \t\f\v\r\n" ) |
#include <ImFusion/Core/String.h>
Returns a std::string_view into the input string where all trailing occurrences of whitespace are removed.
| str | The string to trim. |
| whitespace | Set of whitespace characters which shall be removed at the beginning and the end. |
| void toLower | ( | std::string & | input | ) |
#include <ImFusion/Core/String.h>
Convert the input string to lower case characters.
| void toUpper | ( | std::string & | input | ) |
#include <ImFusion/Core/String.h>
Convert the input string to upper case characters.
| std::string toLowerCopy | ( | std::string_view | input | ) |
#include <ImFusion/Core/String.h>
Convert the input string to lower case characters.
| std::string toUpperCopy | ( | std::string_view | input | ) |
#include <ImFusion/Core/String.h>
Convert the input string to upper case characters.
|
inline |
#include <ImFusion/Core/String.h>
Joins the list to a string and separates the elements with sep.
Each element is converted with unary_op to a string.
Example:
-> "1/2/3/4"
|
inline |
#include <ImFusion/Core/String.h>
Joins the list to a string and separates the elements with sep.
Each element is converted by std::stringstream to a string.
Example:
-> "1/2/3/4"
| std::string joinNonEmpty | ( | const std::vector< std::string > & | vec, |
| const std::string & | sep = "" ) |
#include <ImFusion/Core/String.h>
Joins a vector of strings together, interposing a separator (empty by default).
Empty strings will not turn into a duplicated separator.
| std::vector< std::string > split | ( | std::string_view | input, |
| std::string_view | separator, | ||
| Flags< SplitOptions > | splitOptions = SplitOptions::Default ) |
#include <ImFusion/Core/String.h>
Splits input into substrings based on the given separator and splitOptions.
| input | Input string |
| separator | Delimiter string, splitOptions defines whether the whole string or any of its characters is used as delimiter. If separator is empty the entire input string is returned without any splits. |
| splitOptions | Selected flags defining how to interpret separator, whether or not to ignore empty strings in the result, and whether or not to trim the individual substrings. |
| std::vector< std::string_view > splitRef | ( | std::string_view | input, |
| std::string_view | separator, | ||
| Flags< SplitOptions > | splitOptions = SplitOptions::Default ) |
#include <ImFusion/Core/String.h>
Splits input into substring views based on the given separator and splitOptions.
| input | Input string |
| separator | Delimiter string, splitOptions defines whether the whole string or any of its characters is used as delimiter. If separator is empty the entire input string is returned without any splits. |
| splitOptions | Selected flags defining how to interpret separator, whether or not to ignore empty strings in the result, and whether or not to trim the individual substrings. |
| std::vector< std::string > splitCamelCase | ( | const std::string & | input | ) |
#include <ImFusion/Core/String.h>
Split camel case string into words.
| input | The input string to split. |
The input string will be split at each uppercase letter following anything else than an uppercase letter. The first letter of each word will be uppercase. E.g. "CamelCaseString" -> {"Camel", "Case", "String"}, "CamelCase123MPR" -> {"Camel", "Case123", "MPR"}, "camelCase" -> {"Camel", "Case"}
| void replaceAll | ( | std::string & | str, |
| std::string_view | from, | ||
| std::string_view | to ) |
| std::string replaceAllCopy | ( | std::string_view | str, |
| std::string_view | from, | ||
| std::string_view | to ) |
| void removeLetters | ( | std::string & | str | ) |
#include <ImFusion/Core/String.h>
Removes all alphabetic characters in place.
| str | The string from which all alphabetic characters should be removed. |
| std::string fromDurationMs | ( | double | durationInMilliseconds | ) |
#include <ImFusion/Core/String.h>
Convert a duration in milliseconds to a human-readable string with days, hours, minutes where applicable.
| durationInMilliseconds | Double to be converted into a string. |
| std::string fromDouble | ( | double | value, |
| std::optional< int > | maxDecimals = std::nullopt ) |
#include <ImFusion/Core/String.h>
Convert a double to a string representation, with a limited max number of decimals.
When maxDecimals is not provided, it is equivalent to std::numeric_limits<double>::digits10. The returned string always uses '.' separation to avoid region-dependent bugs. "NAN", "INF" or "-INF" may be returned as special cases. The returned string also has the property of containing a minimum amount of characters, for example:
| value | Double to be converted into a string. |
| maxDecimals | Max number of decimals that the returned string may contain. If the value can only be represented in scientific notation, then this function returns a scientific notation and this argument determines the number of decimals in the significand part. This argument is clipped between 0 and std::numeric_limits<double>::max_digits10. When not provided, it is equivalent to std::numeric_limits<double>::digits10. The roundtrip "double -> string -> double" is only guaranteed with std::numeric_limits<double>::max_digits10. The roundtrip "string -> double -> string" is only guaranteed with std::numeric_limits<double>::digits10. However, with std::numeric_limits<double>::digits10 this function returns a string such that the roundtrip "double -> string -> double" is still a valid double. |
| int naturalCompare | ( | const std::string & | str1, |
| const std::string & | str2 ) |
#include <ImFusion/Core/String.h>
Compare two strings according to the natural sort order.
The natural sort order is the same as the alphanumerical sort order except that multi-digit numbers are treated atomically. E.g.:
| int levenshteinDistance | ( | const std::string & | source, |
| const std::string & | target, | ||
| CaseSensitivity | sensitivity = CaseSensitive ) |
#include <ImFusion/Core/String.h>
Computes the Levenshtein distance (also known as Edit distance) between two strings.
This distance is the minimal number of character edits (replacement, insertion, deletion) that are needed to map the source string to the target string. For example, the distance between the string "heard" and "bird" would be 3 (two substitutions and one deletion).