GDScript 格式字符串

格式字符串 的功能, 该功能允许重用文本模板以简洁地创建不同但相似的字符串. 格式字符串与普通字符串一样, 只不过它们包含某些占位符字符序列. 然后, 这些占位符可以轻松地由传递给格式字符串的参数替换. %s 作为占位符, 格式字符串 "Hello %s, how are you? 可以很容易地更改为 "Hello World, how are you?". 注意占位符在字符串的中间; 在不使用格式字符串的情况下进行修改可能很麻烦.

在 GDScript 中的用法

检查这个具体的GDScript示例:

  1. # Define a format string with placeholder '%s'var format_string = "We're waiting for %s."# Using the '%' operator, the placeholder is replaced with the desired valuevar actual_string = format_string % "Godot"print(actual_string)# Output: "We're waiting for Godot."

% 开头, 但是下一个或多个字符, 即 格式说明符, 决定如何将给定值转换为字符串. %s 是最简单的占位符, 并且适用于大多数用例: 它使用与隐式 String 转换相同的方法或 str() 转换值. 字符串保持不变, 布尔值变成 "True""False", 整数或实数变为小数, 其他类型通常以人类可读的字符串形式返回其数据. String.format() 方法. 它将字符串中所有出现的键替换为相应的值. 该方法可以处理数组或键/值对的字典. 数组可以用作键, 索引或混合样式(请参见以下示例). 仅当使用数组的索引或混合样式时, 顺序才重要. GDScript中的一个简单示例:

  1. # Define a format stringvar format_string = "We're waiting for {str}"# Using the 'format' method, replace the 'str' placeholdervar actual_string = format_string.format({"str": "Godot"})print(actual_string)# Output: "We're waiting for Godot"

格式说明符, 但是它们仅在使用 % 操作符时适用.

多个占位符

* 的格式说明符, 请参见 动态填充):

  1. var format_string = "%s was reluctant to learn %s, but now he enjoys it."var actual_string = format_string % ["Estragon", "GDScript"]print(actual_string)# Output: "Estragon was reluctant to learn GDScript, but now he enjoys it."

请注意, 这些值是按顺序插入的. 请记住, 必须同时替换所有占位符, 因此必须有适当数量的值.

格式说明符

s 之外, 还有其他格式说明符可以在占位符中使用. 它们由一个或多个字符组成. 其中一些像 s 一样自行工作, 另一些出现在其他字符之前, 还有一些仅适用于特定的值或字符.

占位符类型

s 外, 这些格式说明符还需要特定类型的参数.

占位符的修饰符

这些字符在上述占位符前出现. 其中一些只在特定情况下生效.

填充

. (句号), * (星号), - (减号)和数字(0-9)用于填充. 这允许竖直对齐打印几个值, 就像在一列中使用提供固定宽度的字体一样. 要使字符串满足一个最小长度, 需要在标识符前添加一个整数:

  1. print("%10d" % 12345)# output: " 12345"# 5 leading spaces for a total length of 10

0 开头, 那么整数值将用0填充, 而不是空格:

  1. print("%010d" % 12345)# output: "0000012345"

. ()并后跟一个整数来指定实数的精度. . 后没整数时, 精度为0, 舍入为整数值. 要用于填充的整数则必须出现在点之前.

  1. # Pad to minimum length of 10, round to 3 decimal placesprint("%10.3f" % 10000.5555)# Output: " 10000.556"# 1 leading space

- 字符将导致向右而不是向左填充, 对文本右对齐很有用:

  1. print("%-10d" % 12345678)# Output: "12345678 "# 2 trailing spaces

动态填充

* ( 星号 )字符, 可以在不修改格式字符串的情况下设置填充或精度. 它用于代替格式说明符中的整数. 然后在格式化时传递填充和精度的值:

  1. var format_string = "%*.*f"# Pad to length of 7, round to 3 decimal places:print(format_string % [7, 3, 8.8888])# Output: " 8.889"# 2 leading spaces

* 之前添加 0 , 仍然可以在整数占位符中填充0:

  1. print("%0*d" % [2, 3])# Output: "03"

转义序列

% 字符插入格式字符串中, 必须对其进行转义以避免将其读取为占位符. 这是通过将字符加倍来完成的:

  1. var health = 56print("Remaining health: %d%%" % health)# Output: "Remaining health: 56%"

格式方法示例

String.format 方法的各种调用的一些示例. String.format 时, 也可以自定义占位符, 这是该功能的一些示例. String.format 方法和 运算符可能很有用, 因为 String.format 没有办法操纵数字的表示.