更新 MacroMath
+31
-19
@@ -23,6 +23,7 @@
|
|||||||
* ● GetHeightOfRoundArch:获取圆拱高度
|
* ● GetHeightOfRoundArch:获取圆拱高度
|
||||||
* ● GetListFormAToB:获取从A到B的列表
|
* ● GetListFormAToB:获取从A到B的列表
|
||||||
* ● LerpTransform:创建lerp矩阵
|
* ● LerpTransform:创建lerp矩阵
|
||||||
|
* ● GetFraction:将一个值转为分数形式
|
||||||
|
|
||||||
# 文本模块
|
# 文本模块
|
||||||
|
|
||||||
@@ -48,39 +49,50 @@ ListToString
|
|||||||
|
|
||||||
XericLibrary里的所有需要文本拼接的地方都会用到这个成员,请严格按照池化对象操作流程使用,如果错误的使用释放的对象,可能会造成意外的错误。
|
XericLibrary里的所有需要文本拼接的地方都会用到这个成员,请严格按照池化对象操作流程使用,如果错误的使用释放的对象,可能会造成意外的错误。
|
||||||
|
|
||||||
下面是用例:
|
用法:
|
||||||
```
|
```
|
||||||
|
// 旧版用法
|
||||||
public string GetString()
|
public string GetString()
|
||||||
{
|
{
|
||||||
StringBuilder sb = MacroMath.GetStrBuilder();
|
StringBuilder sb = MacroMath.GetStrBuilder();
|
||||||
sb.Append("something...");
|
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.CleanString(); // 先清空,避免有污染
|
||||||
MacroMath.AppendString("some"); // 拼接单个文本
|
MacroMath.AppendString("some"); // 拼接单个文本
|
||||||
MacroMath.BuildString("thing", "..."); // 拼接多个文本
|
MacroMath.BuildString("thing", "..."); // 拼接多个文本
|
||||||
MacroMath.GetStringAndClear(); // 返回 something...
|
MacroMath.GetStringAndClear(); // 返回 something...
|
||||||
```
|
```
|
||||||
这个不是对象池,而是一个单例对象,可以随用随取。
|
|
||||||
|
|
||||||
## 链式语法的文本序列拼接。
|
|
||||||
|
|
||||||
提供`Join`扩展方法。用法与直接使用`string.Join()`类似。
|
|
||||||
|
|
||||||
```
|
|
||||||
List<object> objects = new List<object>();
|
|
||||||
objects.Join(obj => obj.ToString())
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## 文本判断
|
|
||||||
|
|
||||||
空判断,空格判断,相等判断,字符集判断
|
|
||||||
|
|
||||||
## [文本包裹器](../wiki/TextBlockBuilder)
|
## [文本包裹器](../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 ` 替换)
|
||||||
|
|||||||
Reference in New Issue
Block a user