欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 662

点击:1421

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章id: 662
删除全部拼音子字段的功能和代码

作者: xietao


以前dp2circulation可没有给用户提供过什么“删除全部拼音子字段”的代码吧。

如果这样的代码存在,恐怕也是藏在我的那个宝贝代码箱子里,没有拿出来给过用户。

很多用户可能有过这样的经历,想先删除数据中全部已有的拼音子字段再加拼音子字段,或者说,就删除但是不加。这是一个很实在的需求。如果要手动一个一个去删除拼音子字段那该多麻烦啊。

有人可能会说:难道加拼音的功能不是自动替换了旧的拼音子字段么?

是的。但是且慢,在历史上比较旧的CNMARC数据,曾经采用200$a创建拼音子字段$A这样的方法,而dp2circulation中的这个加拼音的功能,是按照200$a创建拼音子字段$9的规则,也就是说,即便替换也是替换了$9,不会去主动删除字段中的$A等。

看看,这个“删除全部拼音子字段”的功能还是有必要存在吧?并且最好能删除以前那个规则下的全部拼音子字段。

下面我就介绍一段这样的代码。

还是要在dp2manager中打开特定书目库的dp2circulation_marc_autogen.cs脚本文件。

为了能删除旧规则下的拼音子字段,需要在MyHost类里面前部变量定义的位置,增加一段下述代码:

 string OldPinyinCfgXml = "<root>"
  + "<item name='200' from='a' to='A' />"
  + "<item name='200' from='e' to='E' />"
  + "<item name='200' from='f' to='F' />"

  + "<item name='701' indicator='@[^A].' from='a' to='A' />"
  + "<item name='711' from='a' to='A' />"
  + "<item name='702' indicator='@[^A].' from='a' to='A' />"
  + "<item name='712' from='a' to='A' />"
  + "</root>";

然后,在Main()函数内增加一段代码,以创建新的功能入口:

            // 删除拼音
            actions.NewItem("删除拼音", "删除全部拼音子字段", "RemovePinyin", false);

然后,在MyHost类中适当位置增加一个RemovePinyin()函数的代码:

 void RemovePinyin()
 {
  RemovePinyin(this.PinyinCfgXml);
  RemovePinyin(this.OldPinyinCfgXml);
 }

好,代码修改就告结束。保存它。

启动dp2circulation,在种册窗里面用Ctrl+A打开功能对话框,选择“删除拼音”功能执行。

~~~

从上面的代码我们可以看出,MyHost类的RemovePinyin()函数,实际上内部调用了两次DetailHost类里面的RemovePinyin(string strCfgXml)函数。第一次调用是为了删除新规则下的全部拼音子字段,第二次调用是为了删除老规则下的全部拼音子字段。

~~~

思考题:

1) 如果仅仅要删除新规则下的全部拼音子字段,上面的代码该如何改写呢?

2) 如果想在MyHost类的RemovePinyin()函数中只调用一次DetailHost类里面的RemovePinyin(string strCfgXml)函数,就达到删除新老规则下的全部拼音子字段的效果,上面的代码又该如何改造呢?

~~~

相信如果您完成了上述思考题,就会觉得这些代码逐渐脱离了平淡无奇,开始有些“神奇”的意思了吧。对,它是柔韧的,可以像橡皮泥一样地捏来捏去。并且,它还是不失“脚本”的特性:依然简洁。



发表时间: 2011-08-11 16:14:26
最后修改时间: 2011-08-11 22:40:53



  • 普通文章 神奇的脚本 (一) xietao 2011-08-11 15:34:50[点击:43076]
  • 普通文章 运行条件 xietao 2011-08-11 15:40:24 (ID:660) [点击:1300]
  • 普通文章 新的加拼音功能 xietao 2011-08-11 15:50:42 (ID:661) [点击:1342]
  • 普通文章 删除全部拼音子字段的功能和代码 xietao 2011-08-11 16:14:26 (ID:662) [点击:1421]
  • 普通文章 老的代码实现不了老规则加拼音 xietao 2011-08-11 16:27:13 (ID:663) [点击:1415]
  • 普通文章 选择多音字的缓存 xietao 2011-08-11 16:44:19 (ID:664) [点击:1270]
  • 普通文章 批加拼音! xietao 2011-08-11 16:55:24 (ID:665) [点击:1349]
  • 普通文章 批删除拼音 xietao 2011-08-11 17:01:54 (ID:666) [点击:1420]
  •  

    在线用户
    访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客
    当前栏目在线用户数 36, 总在线用户数 43