diff --git a/README.md b/README.md index 6146c085..0b3b0724 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,8 @@ Some modules may depend on other modules. For example, the `polyline2d` module d - Functon - [rotate_p](https://openhome.cc/eGossip/OpenSCAD/lib-rotate_p.html) - + - [sub_str](https://openhome.cc/eGossip/OpenSCAD/lib-sub_str.html) + - Path - [circle_path](https://openhome.cc/eGossip/OpenSCAD/lib-circle_path.html) - [bezier](https://openhome.cc/eGossip/OpenSCAD/lib-bezier.html) diff --git a/docs/lib-sub_str.md b/docs/lib-sub_str.md new file mode 100644 index 00000000..6ed884f2 --- /dev/null +++ b/docs/lib-sub_str.md @@ -0,0 +1,14 @@ +# sub_str + +Returns a new string that is a substring of the given string. + +## Parameters + +- `t` : The original string. +- `begin` : The beginning index, inclusive. +- `end` : The ending index, exclusive. If it's omitted, the substring begins with the character at the specified `begin` and extends to the end of this string. + +## Examples + + echo(sub_str("helloworld", 0, 5)); // ECHO: "hello" + echo(sub_str("helloworld", 5)); // ECHO: "world" diff --git a/src/sub_str.scad b/src/sub_str.scad new file mode 100644 index 00000000..5746b53f --- /dev/null +++ b/src/sub_str.scad @@ -0,0 +1,17 @@ +/** +* sub_str.scad +* +* Returns a new string that is a substring of the given string. +* +* @copyright Justin Lin, 2017 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib-sub_str.html +* +**/ + +function sub_str(t, begin, end, result = "") = + end == undef ? sub_str(t, begin, len(t)) : ( + begin == end ? result : sub_str(t, begin + 1, end, str(result, t[begin])) + ); + \ No newline at end of file