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

点击:1304

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章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[点击:39903]
  • 普通文章 运行条件 xietao 2011-08-11 15:40:24 (ID:660) [点击:1180]
  • 普通文章 新的加拼音功能 xietao 2011-08-11 15:50:42 (ID:661) [点击:1205]
  • 普通文章 删除全部拼音子字段的功能和代码 xietao 2011-08-11 16:14:26 (ID:662) [点击:1304]
  • 普通文章 老的代码实现不了老规则加拼音 xietao 2011-08-11 16:27:13 (ID:663) [点击:1300]
  • 普通文章 选择多音字的缓存 xietao 2011-08-11 16:44:19 (ID:664) [点击:1139]
  • 普通文章 批加拼音! xietao 2011-08-11 16:55:24 (ID:665) [点击:1259]
  • 普通文章 批删除拼音 xietao 2011-08-11 17:01:54 (ID:666) [点击:1315]
  •  

    在线用户
    (无) 
    当前栏目在线用户数 0, 总在线用户数 1