pb blob类型变量如何去掉末尾的空格?
------解决方案--------------------
trim(blob)
------解决方案--------------------
blob b_1
//取 blob
select b_1 into :b_1 from t;
b_1=blob(rtrim(string(b_1)))
------解决方案--------------------
------解决方案--------------------
慎用String(Blob),它有时会让你得到意料之外的结果, 主要是BOM标识符会被自动转换。
------解决方案--------------------
b_1=blob(righttrim(string(b_1)))
------解决方案--------------------
再不行,土一点
- C/C++ code
long ifor i = len(lb) to 1 step -1 if blobmid(lb, i, 1) = blob(' ') then lb = blobmid(lb, 1, i - 1) else exit end ifnext
------解决方案--------------------
------解决方案--------------------
blob说白了,就是一段数据,char[长度],所以和string没有直接的对应关系。因为PB的字符串也是属于C系的字符串以\0作为结尾,所以不能转成string来判断末尾空格。你可以用BlobMid从尾部去判断是否为\x20或者\x0,如果尾部有少数空格的话,那一定耗时比较少。然后截取前面部分。在10.5后好像有byte类型,和GetByteArray函数(效率比较高),你可以先转换在判断,时间成本应该比较小。
------解决方案--------------------
为什么要这么处理blob 数据?
------解决方案--------------------
- C# code
Blob lblb_SourceBlob lblb_TargetLong iLong ll_LenByte ly_Charlbl_Source = ...ll_Len = Length(lblb_Source)// 从最后一位开始循环处理数据For i = ll_Len To 1 Step -1 GetByte(lblb_Source, i, ly_Char) // 如果当前字节不是空格、Tab、字符串结尾符 If ly_Char <> 0 And ly_Char <> 32 And ly_Char <> 9 Then Exit // 退出循环 End IfNextlbl_Target = BlobMid(lbl_Source, 1, i) // 截取数据
------解决方案--------------------
是用trim啊。