按序分组再分组统计

使用Java读取带有'*'和'#'标记的TXT文件,统计相邻字母对的出现次数。初学者可理解的代码示例,通过SPL脚本简化处理流程。
摘要由CSDN通过智能技术生成

【问题】

用java读入、修改、再把修改后的数据写入新txt,希望写入新txt的结果是所有的相邻字母对出现的次数(ab=次,ba=次,aa=次,等等),原始数据中的*和#分别表示字母串的开始和结束。 
我是Java初学者,请大家帮忙,写一个可以直接运行并且初学者能读懂的代码,关键部分给出注释。感谢大家热心帮忙。 
源txt部分数据(都是这种格式): 
































#

【回答】

Java写这个很繁琐,用可嵌入JAVA的SPL实现会简单许多:

A
1=file("E:\\s.txt").import@i()
2=A1.select(~!="#").group@i(~=="*")
3=A2.conj(~.([~[-1],~]).to(3,))
4=A3.groups(~:a;count(~):b)
5=A4.new(a.concat()+"="+string(b)+"次")
6=file("E:\\result.txt").export(A5)

A1:读取s.txt中的内容。

A2:依次选取非“#”字符,再对数据进行分组,每组数据以“*”开头。

A3:针对每组数据,取前一个成员与当前成员组成一个序列,并选出第3个及其之后的序列,最后进行和列。

A4:分组统计每个序列出现的次数。

A5:对A4数据进一步处理。

A6:将A5导出到指定文件。

这段代码可以方便地集成进Java(可参考Java 如何调用 SPL 脚本)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值