字符串 (str
)
所有 字符串 都有以下方法。字符串是不可变的,所有操作都会将其结果作为新字符串返回。
由以下返回
以下函数和方法返回字符串对象
get_option()
join_paths()
bool.to_string()
build_machine.cpu()
build_machine.cpu_family()
build_machine.endian()
build_machine.kernel()
build_machine.subsystem()
build_machine.system()
build_tgt.full_path()
build_tgt.name()
build_tgt.path()
cfg_data.get()
cfg_data.get_unquoted()
compiler.get_argument_syntax()
compiler.get_define()
compiler.get_id()
compiler.get_linker_id()
compiler.version()
custom_idx.full_path()
custom_tgt.full_path()
dep.get_configtool_variable()
dep.get_pkgconfig_variable()
dep.get_variable()
dep.include_type()
dep.name()
dep.type_name()
dep.version()
external_program.full_path()
external_program.path()
external_program.version()
file.full_path()
int.to_string()
meson.backend()
meson.build_options()
meson.build_root()
meson.current_build_dir()
meson.current_source_dir()
meson.global_build_root()
meson.global_source_root()
meson.project_build_root()
meson.project_name()
meson.project_source_root()
meson.project_version()
meson.source_root()
meson.version()
runresult.stderr()
runresult.stdout()
str.format()
str.join()
str.replace()
str.strip()
str.substring()
str.to_lower()
str.to_upper()
str.underscorify()
字符串方法
str.contains()
如果字符串包含作为参数指定的字符串,则返回true
。
签名
# Returns `true` if string contains the string specified as the argument
bool contains(
str fragment, # The string fragment to check
)
示例
target = 'x86_FreeBSD'
is_fbsd = target.to_lower().contains('freebsd')
# is_fbsd now has the boolean value 'true'
参数
str.contains()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
fragment |
str |
要检查的字符串片段 |
|
str.endswith()
如果字符串以作为参数指定的字符串结尾,则返回 true。
签名
# Returns true if string ends with the string specified as the argument
bool endswith(
str fragment, # The string fragment to check
)
示例
target = 'x86_FreeBSD'
is_bsd = target.to_lower().endswith('bsd') # boolean value 'true'
参数
str.endswith()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
fragment |
str |
要检查的字符串片段 |
|
str.format()
可以使用字符串格式化功能构建字符串。
有关更多信息,请参阅 Meson 语法条目。
从 1.3.0 开始,字符串、整数、布尔值、选项、字典及其列表以外的值已弃用。它们以前会打印原始 Python 对象的内部表示。
签名
# Strings can be built using the string formatting functionality
str format(
str fmt, # The string to format
int | bool | str value..., # The values to replace the @number@ placeholders in the format string
)
示例
template = 'string: @0@, number: @1@, bool: @2@'
res = template.format('text', 1, true)
# res now has value 'string: text, number: 1, bool: true'
参数
参数扁平化 **不受** 此函数支持。
str.format()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
fmt |
str |
要格式化的字符串。 格式化通过将类型为 |
|
此外,该方法接受 0
到 infinity
之间的可变参数 (value...
),其类型为
。int
| bool
| str
用于替换格式字符串中 @number@
占位符的值。
str.join()
与 split 相反,例如 '.'.join(['a', 'b', 'c']
将产生 'a.b.c'
。
签名
# The opposite of split,
str join(
str strings..., # The strings to join with the current string
)
示例
# Similar to the Python str.join()
output = ' '.join(['foo', 'bar'])
# Output value is 'foo bar'
pathsep = ':'
path = pathsep.join(['/usr/bin', '/bin', '/usr/local/bin'])
# path now has the value '/usr/bin:/bin:/usr/local/bin'
参数
该方法接受 0
到 infinity
之间的可变参数 (strings...
),其类型为
。str
要使用当前字符串连接的字符串。
在 Meson 0.60.0 之前,此函数只接受一个类型为 [[list[str]]] 的位置参数。
(从 0.60.0 开始)
str.replace()
搜索所有出现的 old
并将其替换为 new
签名
(从 0.58.0 开始)
# Search all occurrences of `old` and replace it with `new`
str replace(
str old, # The substring to search
str new, # The replacement string
)
示例
# Replaces all instances of one substring with another
s = 'semicolons;as;separators'
s = s.replace('as', 'are')
# 's' now has the value of 'semicolons;are;separators'
参数
str.replace()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
old |
str |
要搜索的子字符串 |
|
new |
str |
替换字符串 |
|
str.split()
在指定字符(如果未设置,则为空格)处拆分字符串,并将各部分以数组形式返回。
签名
# Splits the string at the specified character
list[str] split(
str [split_string], # Specifies the character / substring where to split the string
)
示例
# Similar to the Python str.split()
components = 'a b c d '.split()
# components now has the value ['a', 'b', 'c', 'd']
components = 'a b c d '.split(' ')
# components now has the value ['a', 'b', '', '', 'c', 'd', '']
参数
str.split()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
split_string |
str |
指定拆分字符串的位置的字符/子字符串。 |
[可选] |
str.splitlines()
将字符串拆分为一个由行组成的数组。与 .split('\n') 不同,空字符串会产生一个空数组,如果字符串以换行符结尾,则 splitlines() 不会在这个最后的换行符处拆分。'\n'、'\r' 和 '\r\n' 都被视为换行符。
签名
(从 1.2.0 开始)
list[str] splitlines()
示例
output = 'hello\nworld\n'.splitlines()
# Output value is ['hello', 'world']
output = ''.splitlines()
# Output value is []
fs = import('fs')
paths = fs.read('my_paths.list').splitlines()
# paths is now the paths listed in 'my_paths.list', or an empty list
# if 'my_paths.list' is empty
str.startswith()
如果字符串以作为参数指定的字符串开头,则返回 true。
签名
# Returns true if string starts with the string specified as the argument
bool startswith(
str fragment, # The string fragment to check
)
示例
target = 'x86_FreeBSD'
is_x86 = target.startswith('x86') # boolean value 'true'
参数
str.startswith()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
fragment |
str |
要检查的字符串片段 |
|
str.strip()
从字符串中删除前导/结尾字符。
默认情况下,要删除的字符是空格和换行符。
签名
# Removes leading/ending characters from the string
str strip(
str [strip_chars], # Instead of whitespace, strip all the characters in this string
)
示例
# Similar to the Python str.strip(). Removes leading/ending spaces and newlines
define = ' -Dsomedefine '
stripped_define = define.strip()
# 'stripped_define' now has the value '-Dsomedefine'
参数
str.strip()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
strip_chars |
str |
不使用空格,而是删除此字符串中的所有字符。 |
(从 0.43.0 开始) [可选] |
str.substring()
返回从 start
到 end
指定的子字符串。start
和 end
参数都是可选的,因此,例如,'foobar'.substring()
将返回 'foobar'
。
该方法接受负值,其中负 start
相对于字符串的末尾 len(string) - start
,负 end
也是如此。
如果 start
或 end
超出范围,则将使用最接近的字符的位置。如果 start
大于 end
,则结果将是一个空子字符串。
签名
(从 0.56.0 开始)
# Returns a substring specified from `start` to `end`
str substring(
int [start], # The start position
int [end], # The end position
)
示例
# Similar to the Python str[start:end] syntax
target = 'x86_FreeBSD'
platform = target.substring(0, 3) # prefix string value 'x86'
system = target.substring(4) # suffix string value 'FreeBSD'
使用负值的示例
string = 'foobar'
string.substring(-5, -3) # => 'oo'
string.substring(1, -1) # => 'ooba'
使用超出范围的值的示例
string = 'foobar'
string.substring(64) # => ''
string.substring(0, 64) # => 'foobar'
string.substring(64, 0) # => ''
参数
str.substring()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
start |
int |
起始位置 |
[可选] |
end |
int |
结束位置 |
[可选] |
str.to_int()
将字符串转换为 int,如果无法转换,则抛出错误
签名
int to_int()
示例
version = '1'
# Converts the string to an int and throws an error if it can't be
ver_int = version.to_int()
str.to_lower()
将所有字符转换为小写
签名
str to_lower()
示例
target = 'x86_FreeBSD'
lower = target.to_lower() # t now has the value 'x86_freebsd'
str.to_upper()
将所有字符转换为大写
签名
str to_upper()
示例
target = 'x86_FreeBSD'
upper = target.to_upper() # t now has the value 'X86_FREEBSD'
str.underscorify()
创建一个字符串,其中所有非字母数字字符都被替换为 _
。
签名
str underscorify()
示例
name = 'Meson Docs.txt#Reference-manual'
# Replaces all characters other than `a-zA-Z0-9` with `_` (underscore)
# Useful for substituting into #defines, filenames, etc.
underscored = name.underscorify()
# underscored now has the value 'Meson_Docs_txt_Reference_manual'
str.version_compare()
执行语义版本比较。
签名
# Does semantic version comparison
bool version_compare(
str compare_string, # The string to compare to
)
示例
version = '1.2.3'
# Compare version numbers semantically
is_new = version.version_compare('>=2.0')
# is_new now has the boolean value false
# Supports the following operators: '>', '<', '>=', '<=', '!=', '==', '='
Meson 版本比较约定包括
'3.6'.version_compare('>=3.6.0') == false
最好明确指定完整的修订级别以进行比较。
参数
str.version_compare()
方法接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
compare_string |
str |
要比较的字符串。 |
|
搜索结果为