更新 MacroMath

2026-03-17 12:00:17 +08:00
parent 9c81719fe8
commit 91313f419b
+31 -19
@@ -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<object> objects = new List<object>();
objects.Join(obj => obj.ToString())
```
## 文本判断
空判断,空格判断,相等判断,字符集判断
## [文本包裹器](../wiki/TextBlockBuilder)
文本包裹器提供了一个可以在编译器中进行语法检查的功能,同时允许你将其当作一种模板字符串,向里面填充变量,委托,反射等用法。
## 其他用法
* join:和string.join类似,但可以直接在枚举器上链式调用,并且支持指定开头,结尾字符串
```
List<object> objects = new List<object>();
objects.Join(obj => obj.ToString())
```
* InsertCommasAtEachIntervals:和`join`扩展类似,但是它只接受枚举器,返回一个在每个元素之间插入了一个逗号的枚举器
* LimitStringLength:限制输出的文本数量,可以通过`availableRate`参数指定省略文本的位置,并在省略的文本除替换为 `replaceTruncateChars` 所代表的省略号。
* SimpleWrap:对超出长度的文本插入换行符号
* IsStringNullOrEmpty:支持链式调用的判断一个字符串是否为空
* IsStringNullOrWhiteSpace:支持链式调用的判断一个字符串是否为空或由空格组成
* IsSeparatelyCharEqual:支持链式调用地判断两个字符串是否相等,并忽略他们的空格 (方法逐字符比较低效,使用 `IsWordSequenceEqual ` 替换)