- 浏览: 160908 次
- 性别:
- 来自: 保山腾冲
文章分类
最新评论
-
TNTDoctor:
谢谢,标记一下,有空来看看
(转)Haskell与范畴论 -
t173625478:
文章一般般,不够透彻,以至于误解了很多函数式特性的由来和作用。 ...
(转)函数式编程另类指南 -
liyiwen007:
学习了!
很受益!
用AGG实现高质量图形输出(二) -
hqs7636:
感谢!!!!!!!
《learn to tango with D》译文 -
rocex:
多谢,刚好用到。
《learn to tango with D》译文
tango.text.Text(r4774)
License:
BSD style: see license.txt
Version:
Initial release: December 2005
Author:
Kris
Text是一个管理和操作Unicode字符数组的类。
Text保持一个当前“选择对象”(selection),通过select()和search()方法控制。append()、prepend()、 replace()和remove()中的每一个操作都是针对选择对象进行的。(这些方法分别是附加、前置、替换和移除)
search()方法(搜索)也可以针对当前选择对象进行操作,只要有一个跨越匹配模式的迭代方法。要设置跨越所有内容的选择对象,可以用一个没有参数的select()方法。
内容的索引和长度总是统计代码单元(code units),而不是代码点(code points)。这类似于传统的ascii字符串处理,然而索引很少在实践中用到选择对象上:子串索引通常与直接操作相反。这就允许对于utf代用品(utf-surrogates)一个更现代化的模型。
字符串支持很大范围的功能,从插入(insert)和移除(removal)到utf编解码(encoding and decoding)。也存在一个不变的子集叫做TextView,旨在简化多线程环境中的生命。然而,TextView必须暴露原状的内容,因此它的不变性在一定程度上依赖于所谓的被调用者名誉( "honour" of a callee)。在这时D不能使不变性强制执行,但该类将被修改以支持这样的特性--通过切片方法(slice())。
这个类是模板化的,可以用到char[]、wchar[]和dchar[]上,并能无缝迁移编码。特别的,tango.text.Util中的所有函数与任何支持的编码的Text内容相兼容。将来,这个类会变成通向广阔的ICU unicode库的一道主要大门。
注意一些公用的文字操作可以通过结合tango.text.Text 和 tango.text.Util 来完成,比如文字行可以这样处理:
1 2 3 4 |
auto source = new Text!(char)("one\ntwo\nthree"); foreach (line; Util.lines(source.slice)) // do something with line |
说点有点像尤达大师(Yoda)的可以象下面这样完成:
1 2 3 4 |
auto dst = new Text!(char); foreach (element; Util.delims ("all cows eat grass", " ")) dst.prepend (element); |
下面是一个API和类层次结构的概述:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
class Text(T) : TextView!(T) { // 设置或重设内容 Text set (T[] chars, bool mutable=true); Text set (TextView other, bool mutable=true); // 取回当前选择的文字 T[] selection (); // 设置并取回当前选择点 Text point (uint index); uint point (); // 标记一个选择对象 Text select (int start=0, int length=int.max); // 返回一个迭代器移动到选择对象周围 // 也揭示了替换所有(replace all)的功能 Search search (T chr); Search search (T[] pattern); // 在当前选择对象后格式化参数 Text format (T[] format, ...); // 在当前选择对象后追加 Text append (T[] text); Text append (TextView other); Text append (T chr, int count=1); Text append (InputStream source); //在当前选择对象后编码( transcode) Text encode (char[]); Text encode (wchar[]); Text encode (dchar[]); // 在当前选择对象前插入 Text prepend (T[] text); Text prepend (TextView other); Text prepend (T chr, int count=1); // 替换当前选择对象 Text replace (T chr); Text replace (T[] text); Text replace (TextView other); // 移除当前选择对象 Text remove (); // 清除内容 Text clear (); // 修剪行间和结尾空白 Text trim (); // 修剪行间和结尾字符(chr)实例。 Text strip (T chr); //对一个点或当前选择对象截断 Text truncate (int point = int.max); // 为插入/添加保留一些空间 Text reserve (int extra); //写内容到流 Text write (OutputStream sink); } class TextView(T) : UniText { // 取内容的哈希值 hash_t toHash (); // 返回内容长度 uint length (); // 比较内容 bool equals (T[] text); bool equals (TextView other); bool ends (T[] text); bool ends (TextView other); bool starts (T[] text); bool starts (TextView other); int compare (T[] text); int compare (TextView other); int opEquals (Object other); int opCmp (Object other); // 复制内容 T[] copy (T[] dst); //返回内容 T[] slice (); // 返回数据类型 typeinfo encoding (); // 替换换比较算法(replace the comparison algorithm) Comparator comparator (Comparator other); } class UniText { //转换内容 abstract char[] toString (char[] dst = null); abstract wchar[] toString16 (wchar[] dst = null); abstract dchar[] toString32 (dchar[] dst = null); } struct Search { // 选择前一个实例 bool prev(); //选择下一个实例 bool next(); // 返回实例计数 size_t count(); // 是否包含实例? bool within(); // 用一个字符替换所有(字符) void replace(T); //用文本替换所有(字符) (null == remove all) void replace(T[]); } |
废弃:
注:
一个像'a'这样的字符会被隐式转换成uint,从而让这个构造器接受,使它看起来可以用一个单一的字符来初始化一个Text实例,省略了不支持的某些东西(something which is not supported)。
1 2 3 4 5 |
auto t = new Text ("hello world"); auto s = t.search ("world"); assert (s.next); assert (t.selection == "world"); |
1 2 3 4 5 6 |
auto t = new Text ("hello world"); auto s = t.search ("world"); // 替换所有"world"实例为"everyone" assert (s.replace ("everyone")); assert (s.count is 0); |
废弃:
废弃:
废弃:
废弃:
发表评论
-
tango.text.convert.Utf 翻译
2009-07-23 16:59 827tango.text.convert.Utf(r4809 ... -
tango.io.Buffer 翻译
2009-07-23 13:58 1109(提交后发觉内容不在了 ... -
tango.io.device.Conduit 翻译
2009-07-23 13:56 811tango.io.device.Conduit (r48 ... -
tango.core.Exception 翻译
2009-07-20 19:29 881tango.core.Exception(r4796) ... -
tango.io.device.File 翻译
2009-07-20 19:27 1099tango.io.device.File (r4796) ... -
tango.io.Console 翻译
2009-07-19 14:03 956tango.io.Console (r4795) Li ... -
tango.io.digest.Digest 翻译
2009-07-19 14:00 877tango.io.digest.Digest(r4795 ... -
tango.io.digest.Crc32 翻译
2009-07-19 13:59 856tango.io.digest.Crc32 (r4795 ... -
tango.io.UnicodeFile 翻译
2009-07-19 13:58 790tango.io.UnicodeFile (r4795) ... -
tango.text.Search 翻译
2009-07-18 20:28 1005tango.text.Search License: ... -
tango.sys.win32.CodePage 翻译
2009-07-18 20:26 897tango.sys.win32.CodePage(r47 ... -
tango.sys.Environment 翻译
2009-07-18 20:25 875tango.sys.Environment Lice ... -
tango.text.convert.Integer 翻译
2009-07-18 20:24 915tango.text.convert.Integer(r ... -
tango.text.convert.DateTime 翻译
2009-07-18 20:22 772tango.text.convert.DateTime ... -
tango.text.convert.TimeStamp 翻译
2009-07-18 20:19 913tango.text.convert.TimeStamp ... -
tango.text.Ascii 翻译
2009-07-17 23:12 925tango.text.Ascii(r4792) Li ... -
tango.text.convert.Layout 翻译
2009-07-17 23:10 973tango.text.convert.Layout ... -
tango.io.File 翻译
2009-07-17 21:35 781tango.io.File License: BS ... -
tango.text.Util 翻译
2009-07-17 11:50 968tango.text.Util(r4774) Lice ... -
tango.io.FileScan 翻译
2009-07-11 23:20 869tango.io.FileScan (r4774) ...
相关推荐
processed_text = tango_articles.preprocessing(text) # 提取文章内容 summary = tango_articles.content_extraction(article_html) # 获取关键词 keywords = tango_articles.keyword_extraction(text) ``` 四、...
最初,ACCEL Technologies Inc推出了TANGO,开启了EDA的时代,随后Protel For Dos作为TANGO的升级版出现,逐渐成为行业标准。随着Windows系统的普及,Protel For Windows系列随之诞生,提供了更友好的用户界面。在...
<link rel="stylesheet" type="text/css" href="style.css" /> <script src="https://code.jquery.com/jquery-3.x.y.min.js"></script> <script src="jquery.jcarousel.min.js"> ``` **2. HTML结构** jCarousel需要...
Protel软件起源于1988年,最初是Tango软件包的升级版——Protel for DOS。随着技术进步,1991年推出了基于Windows平台的PCB设计软件,随后1992年推出了原理图设计软件包Protel for Windows 1.0。1996年的Protel 3和...
该软件自1987年发布以来,经过多次更新和改进,如Tango、Protel for DOS和Protel for Windows等版本,直至1999年的Protel 99,其自动布线功能得到了显著提升。 Protel 99主要由以下几个组成部分构成: 1. 原理图...
- 1987年,ACCEL Technologies Inc推出了Tango,这是早期的DOS版本。 - 之后,随着Windows平台的兴起,Protel推出了基于Windows的1.X和3.X版本。 - 1998年的Protel98以其出色的自动布线功能受到关注。 - 1999年...
Protel是一款电子设计自动化(EDA)软件,起源于1980年代中期,由ACCEL Technologies Inc推出的TANGO软件包,开启了电子设计自动化的新篇章。随后,Protel Technology公司推出了Protel For Dos,进一步提升了设计...
我看到了Sublime Text 3的新材质主题,并且非常喜欢它,所以我尝试为自己喜欢的编辑器vim重新创建该主题。 它基于tango2主题-目前尚不完善,但我尝试对其进行清理并使其更好:) 注意:我仅启用了True Colors的gvim ...
```plaintext Type FindWaterKing(Type* ID, int N) { Type candidate; int nTimes, i; for (i = nTimes = 0; i ; i++) { if (nTimes == 0) { candidate = ID[i]; nTimes = 1; } else { if (candidate == ID...
在配置窗口中,选择“Fonts & Colors”选项卡,然后选择“Text”项。 3. **调整字体大小** 在字体列表中,选择想要调整的字体类型(如“Default”),然后点击“Edit”按钮。在弹出的窗口中,可以修改字体大小和...
需要注意的是,对于tango库中的元件,Protel99的默认库文件“proteldos_schematic_libraries.ddb”中已经包含了这些库,因此通常无需额外添加。 #### 二、GERBER文件格式及其应用 GERBER文件是用于PCB制造的标准...
- **起源与发展**:Protel最初诞生于1987年,名为Tango,是一款运行在DOS系统下的软件。随着计算机技术的发展以及用户需求的增长,其开发公司ACCEL Technologies Inc.逐步将其升级至Windows平台,并更名为Protel for...
Protel的前身TANGO是美国ACCEL Technologies Inc在80年代推出的第一个电子线路设计软件包,开启了EDA的先河。随后,Protel公司通过收购、合并和不断的软件升级,逐步推出了Protel95、Protel98、Protel99等版本,每一...
'P': 'Papa', 'Q': 'Quebec', 'R': 'Romeo', 'S': 'Sierra', 'T': 'Tango', 'U': 'Uniform', 'V': 'Victor', 'W': 'Whiskey', 'X': 'Xray', 'Y': 'Yankee', 'Z': 'Zulu' } def nato_encode(text): return [nato...