diff --git a/MacroMath.md b/MacroMath.md index abaf1f0..7dc4c23 100644 --- a/MacroMath.md +++ b/MacroMath.md @@ -23,6 +23,7 @@ * ● GetHeightOfRoundArch:获取圆拱高度 * ● GetListFormAToB:获取从A到B的列表 * ● LerpTransform:创建lerp矩阵 +* ● GetFraction:将一个值转为分数形式 # 文本模块 @@ -48,39 +49,50 @@ ListToString XericLibrary里的所有需要文本拼接的地方都会用到这个成员,请严格按照池化对象操作流程使用,如果错误的使用释放的对象,可能会造成意外的错误。 -下面是用例: +用法: ``` +// 旧版用法 public string GetString() { StringBuilder sb = MacroMath.GetStrBuilder(); sb.Append("something..."); - return MacroMath.ReleaseStrBuilder(sb); + return MacroMath.ReleaseStrBuilder(sb); // 释放这个构建器可以立刻获得里面的内容。 +} + +// 新版用法 +public string GetString() +{ + using (MacroMath.GetStringBuilder(out var sb)) + { + sb.Append("something..."); + } // using作用域结束后stringbuild会自动释放 } ``` -可以看到,在对象池上释放这个构建器对象可以立刻获得里面的内容,可以省略部分内容。 -另外还有一个文本拼接器单例用法: +另外还有一个文本拼接器单例: + ``` +// 这个不是对象池,而是一个单例对象,可以随用随取,但是注意不要用在多线程中。 MacroMath.CleanString(); // 先清空,避免有污染 MacroMath.AppendString("some"); // 拼接单个文本 MacroMath.BuildString("thing", "..."); // 拼接多个文本 MacroMath.GetStringAndClear(); // 返回 something... ``` -这个不是对象池,而是一个单例对象,可以随用随取。 - -## 链式语法的文本序列拼接。 - -提供`Join`扩展方法。用法与直接使用`string.Join()`类似。 - -``` -List objects = new List(); -objects.Join(obj => obj.ToString()) - -``` - -## 文本判断 - -空判断,空格判断,相等判断,字符集判断 ## [文本包裹器](../wiki/TextBlockBuilder) +文本包裹器提供了一个可以在编译器中进行语法检查的功能,同时允许你将其当作一种模板字符串,向里面填充变量,委托,反射等用法。 + +## 其他用法 + +* join:和string.join类似,但可以直接在枚举器上链式调用,并且支持指定开头,结尾字符串 + ``` + List objects = new List(); + objects.Join(obj => obj.ToString()) + ``` +* InsertCommasAtEachIntervals:和`join`扩展类似,但是它只接受枚举器,返回一个在每个元素之间插入了一个逗号的枚举器 +* LimitStringLength:限制输出的文本数量,可以通过`availableRate`参数指定省略文本的位置,并在省略的文本除替换为 `replaceTruncateChars` 所代表的省略号。 +* SimpleWrap:对超出长度的文本插入换行符号 +* IsStringNullOrEmpty:支持链式调用的判断一个字符串是否为空 +* IsStringNullOrWhiteSpace:支持链式调用的判断一个字符串是否为空或由空格组成 +* IsSeparatelyCharEqual:支持链式调用地判断两个字符串是否相等,并忽略他们的空格 (方法逐字符比较低效,使用 `IsWordSequenceEqual ` 替换)