跳转到内容

OpenSCAD 用户手册/字符串函数

来自维基教科书,开放的书籍,开放的世界

将所有参数转换为字符串并连接。

用法示例

number=2;
echo ("This is ",number,3," and that's it.");
echo (str("This is ",number,3," and that's it."));

结果

ECHO: "This is ", 2, 3, " and that's it."
ECHO: "This is 23 and that's it."

这可以用于将数字简单地转换为字符串

s = str(n); 

[注意: 需要版本2015.03]

将数字转换为包含具有相应代码的字符的字符串。OpenSCAD 使用 Unicode,因此数字被解释为 Unicode 代码点。超出有效代码点范围的数字将生成空字符串。

参数

chr(Number)
如果代码点有效,则将一个代码点转换为长度为 1 的字符串(字节数取决于 UTF-8 编码)。
chr(Vector)
将参数向量中给出的所有代码点转换为字符串。
chr(Range)
将范围参数产生的所有代码点转换为字符串。

示例

echo(chr(65), chr(97));      // ECHO: "A", "a"
echo(chr(65, 97));           // ECHO: "Aa"
echo(chr([66, 98]));         // ECHO: "Bb"
echo(chr([97 : 2 : 102]));   // ECHO: "ace"
echo(chr(-3));               // ECHO: ""
echo(chr(9786), chr(9788));  // ECHO: "☺", "☼"
echo(len(chr(9788)));        // ECHO: 1

注意:当与 echo() 一起使用时,字符代码大于 127 的控制台输出取决于平台。

[注意: 需要版本2019.05]

将字符转换为表示Unicode 代码点的数字。如果参数不是字符串,则ord()返回undef

参数

ord(String)
将给定字符串的第一个字符转换为 Unicode 代码点。

示例

echo(ord("a"));
// ECHO: 97

echo(ord("BCD"));
// ECHO: 66

echo([for (c = "Hello! 🙂") ord(c)]);
// ECHO: [72, 101, 108, 108, 111, 33, 32, 128578]

txt="1";
echo(ord(txt)-48,txt);
// ECHO: 1,"1" // only converts 1 character

返回文本中的字符数。

echo(len("Hello world"));    // 11

另请参阅 search()

[编辑 | 编辑源代码]

search() 用于文本搜索。

is_string(value)

[编辑 | 编辑源代码]

函数 is_string(value) 如果 value 是字符串,则返回 true,否则返回 false

echo(is_string("alpha")); //true
echo(is_string(22)); //false

用户自定义函数

[编辑 | 编辑源代码]

为了补充本机函数,您可以定义自己的函数,以下是一些建议

//-- Lower case all chars of a string -- does not work with accented characters
function strtolower (string) = 
  chr([for(s=string) let(c=ord(s)) c<91 && c>64 ?c+32:c]); 

//-- Replace char(not string) in a string  
function char_replace (s,old=" ",new="_") = 
  chr([for(i=[0:len(s)-1]) s[i]==old?ord(new):ord(s[i])]);

//-- Replace last chars of a string (can be used for file extension replacement of same length)
function str_rep_last (s,new=".txt") = 
  str(chr([for(i=[0 :len(s)-len(new)-1])ord(s[i])]),new);

//-- integer value from string ---------- 
//Parameters ret and i are for function internal use (recursion)
function strtoint (s, ret=0, i=0) =
  i >= len(s)
  ? ret
  : strtoint(s, ret*10 + ord(s[i]) - ord("0"), i+1);

这里要注意使用 chr() 从由其 ASCII 代码定义的未知数量的字符重新组合字符串。这避免了在列表管理出现之前所需的递归模块使用。

华夏公益教科书