本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[Java报表软件—技术知识]如何在FineReport中取字符串中两相邻分隔符之间的文本
FineReport——报表技术领跑者 发表于 2012/9/6 23:35:38

   使用FineReport的人经常会遇到在设计中要取两个字符之间的数据或者文本的问题。在此贡献一些公式给大家。    写过代码的都知道想到的是用substr或者split函数来做,但是仔细研究一下就会发现substr只能解决取从第几个字符开始的n个字符,而split是返回的用分隔符分割的字符串,没有选择性的截取,后来找了一下,发现原来有这种算法,例子中说的是在excel中的方法,fr兼容excel所以这一点不用担心。    有时需要从包含分隔符号的字符串中提取子字符串,例如Excel工作表的某列中包含类似“200-GH11301-11TB5”的文本字符串,该字符串被两个相同的分隔符号“-”分成三部分,且每部分的字符数不固定,现在需要提取其中的第2部分内容“GH11301"。这时可以使用下面的公式,假如原字符串位于A1单元格中,在B1单元格中输入如下公式:    =MID(LEFT(A1,FIND("`",SUBSTITUTE(A1,"-","`",2))-1),FIND("`",SUBSTITUTE(A1,"-","`",1))+1,LEN(A1))    公式说明:本例用SUBSTITUTE函数将两个分隔符号“-”替换为“`”,“`”符号位于数字“1”键的左侧,也可改为字符串中没有出现的其他特殊符号。然后用FIND函数查找第二个“`”出现的位置并用LEFT函数去掉第二个“`”后面的部分,最后用MID函数提取所需内容。由于MID函数的第三个参数“LEN(A1)”大于所提取文本的字符数,因而本公式适用于各部分长度不固定的字符串。    也可使用下面的公式:    =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),LEN(A1),LEN(A1)))    公式说明:REPT(" ",LEN(A1))产生一个与原字符串长度相同的空格字符串,用SUBSTITUTE函数将其替换各分隔符号,这样所需提取文本的前后就都包含了与原字符串长度相同的空格字符串,再用MID函数进行截取,截取后的字符串前后都包含一些空格,最后用TRIM函数去掉这些空格即得到所需文本。    本例原字符串中有2个分隔符号,第一部分有3个字符,第二部分有7个字符,第三部分有5个字符,字符串总长度LEN(A1)=17,MID函数截取后“GH11301”的前面就有4(3+17-17+1)个空格,后面就有6(17-4-7)个空格。        如果字符串中包含更多的分隔符号,如“1130-80-F030305-5TB1-T(40)”,要提取各部分内容,可以将公式改为:    提取第一部分:    =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),1,LEN(A1)))    或者直接用公式:    =LEFT(A1,FIND("-",A1)-1)    提取其他部分,如第3部分“F030305”:    =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),2*LEN(A1),LEN(A1)))    本例中提取字符串中的第3部分,公式中用红色标识的数字为“2”,如果是第N部分,则为N-1。

阅读全文(1414) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



The Neurotic Fishbowl

.: 公告

本博客提供详细的java报表软件的制作过程,发布java报表软件的版本更新信息,并适时对国内主流报表软件进行功能比较。


Bloginess

«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

.: 我的分类(专题)

首页(357)
Java报表软件—制作笔记(54)
Java报表软件—功能比较(43)
Java报表软件—使用心得(21)
Java报表软件—行业动态(54)
Java报表软件—新闻资讯(48)
Java报表软件—技术知识(49)
Java报表软件—问题解析(2)


In the Bowl

.: 最新日志

如何对报表的参数控件赋值
java报表工具FineReport常见
报表怎么做 FineReport连接池原
报表怎么做FineReport数据连接之
报表模板之报表设计
报表模板之报表设计


.: 最新回复

回复:报表参数
好好学习,
好好学习,天天向上。买双 air jor
回复:理解FineReport缓存系列2
回复:理解FineReport缓存系列2


The Fishkeeper
blog名称:Java报表软件
日志总数:357
评论数量:69
留言数量:0
访问次数:1207207
建立时间:2006年4月16日



Text Me

.: 留言板

签写新留言

需要你的帮助


Other Fish in the Sea

.: 链接

报表开发工具  html5图表java报表开发工具




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144763862 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号