跳轉到內容

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 程式碼定義的未知數量的字元重新組合字串。這避免了在列表管理出現之前所需的遞迴模組使用。

華夏公益教科書