微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从水晶报表中的字符串中提取子字符串

如何解决如何从水晶报表中的字符串中提取子字符串

我是水晶报告的新手。

我的数据(员工ID)具有以下格式

Abc123,uttd333,ddt-435

我只想提取数字并删除前导字母和特殊字符。

还有一些永远不应该打印的值。

管理ID,例如

Gree999,ttt999

我知道有一个中间函数,但这需要我指定子字符串应从其开始的位置。这些值没有固定数量的前导字母。

是否可以在Crystal报表中使用类似sql的Ltrim来实现这一目标?

解决方法

Afaik CR中没有内置功能可以从字符串中删除非数字字符,因此您必须滚动自己的字符(用字段替换{Befehl.EmployeeId}):

StringVar employeeId := {Befehl.EmployeeId};
StringVar result := "";
NumberVar i;

// transfer numeric chars into result one by one
For i := 1 To Length(employeeId) Do
(
  If IsNumeric(employeeId[i]) Then
     result := result + employeeId[i];
);

// output result only if employeeId is not in your admin list
If employeeId In Split('Gree999,ttt999',',') Then
  '--Admin--'
Else
  result;
,

这里是仅捕获字符串的数字部分的另一种方法: strReverse(ToText(Val(strReverse({EmpId})),0,“”))

利用数字始终在末尾的优势。

,

要处理尾随零,可以使用:

#include <SDL2>
#include <stdio.h>

void main()
{
    printf("Testing");
}

但是mweber上面的答案现在更简单了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。