北理数据结构 行编辑

9. 行编辑(10分选做)

成绩 10 开启时间 2017年10月10日 星期二 18:00
折扣 0.8 折扣时间 2017年11月10日 星期五 23:55
允许迟交 关闭时间 2017年11月17日 星期五 23:55

背景:

  早期的操作系统均是字符操作界面,那时只能采用简单的行编辑器进行文字处理,于是也只能使用行命令来编辑文本文件。

  假设现在要开发一个字符界面的编辑器,对文本的编辑操作是通过输入一个一个的“行编辑命令”完成的。

  系统约定:行编辑命令由“命令关键字 命令参数”组成。其中,命令关键字都是单一的字母,命令与参数之间使用一个空格进行分割,当命令参数为多个时采用“/”作为参数的分隔符,如果在命令的参数中间出现符号“/”,则用“\/”表示。我们将“\”定义为转义符。

现在,行编辑器具有如下编辑命令:
行插入:i #/串
  在指定行号(>0)插入一个新行,新行的内容就是命令中给出的“串”。若插入的行超过了已有的行数,则在最后一行的后面插入一个新行。
文本替换:c 被替换串/替换串
  将整个文本中全部[被替换串]替换为[替换串]。
行删除:d #
  其中#为指定的行号
行合并:f #1/#2/#3...
  将行号为 #2 和 #3...的行连接到行号为 #1 的行的后面,取消原来的 #2 行和#3等,合并后#2行和#3等原来的内容不存在了,被后面的行抵补替代。若指定行号超出正文的范围,则放弃操作。

输入:

  假设,我们已经得到了一段文本,这段文本用[Text]......[/Text]的形式描述,之后是一串操作命令。
[Text]
1 222 33 44
2 333 45 d b g 3
3 444 56 333 54
[/Text]
c 333/zhang
d 1
i 1/This is a new line 1.
i 4/This is a new line 4.
f 3/4
i 100/new line.

以上命令的执行过程如下:
[Result:c 333/zhang]
1 222 33 44
2 zhang 45 d b g 3
3 444 56 zhang 54

[Result:d 1]
2 zhang 45 d b g 3
3 444 56 zhang 54

[Result:i 1/This is a new line 1.]
This is a new line 1.
2 zhang 45 d b g 3
3 444 56 zhang 54

[Result:i 4/This is a new line 4.]
This is a new line 1.
2 zhang 45 d b g 3
3 444 56 zhang 54
This is a new line 4.

[Result&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值