字符串 (str)

所有 字符串 都有以下方法。字符串是不可变的,所有操作都会将其结果作为新字符串返回。

由以下返回

以下函数和方法返回字符串对象

字符串方法

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

要格式化的字符串。

格式化通过将类型为 @number@ 的占位符替换为相应的可变参数来实现。

此外,该方法接受 0infinity 之间的可变参数 (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'

参数

该方法接受 0infinity 之间的可变参数 (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()

返回从 startend 指定的子字符串。startend 参数都是可选的,因此,例如,'foobar'.substring() 将返回 'foobar'

该方法接受负值,其中负 start 相对于字符串的末尾 len(string) - start,负 end 也是如此。

如果 startend 超出范围,则将使用最接近的字符的位置。如果 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

要比较的字符串。


搜索结果为