tango.text.Util 翻译

 

tango.text.Util(r4774)

License:

BSD style: see license.txt

Version:

Apr 2004: Initial release Dec 2006: South Seas version

Author:

Kris

为各种细小的函数预留位置(Placeholder)。这些函数全部被模板化,意在可用于charwchardchar字符数组。不过,它们也可以正确地操作别的数组类型。

这些函数的大多数一个索引值,表示的判断标准已经得到确认。当判断标准不匹配时,函数返回一个表示提供给它们的数组长度的值。也就是说,对于C函数可能典型地返回-1的场景,这些函数返回长度(length)来代替。这个可以同D的切割操作很好的工作:

1
2
3
4
5
auto text = "happy:faces";

assert (text[0 .. locate (text, ':')] == "happy");

assert (text[0 .. locate (text, '!')] == "happy:faces");

contains()函数更便于琐碎的查找情况:

1
2
if (contains ("fubar", '!'))
    ...

注意,某些函数希望一个uint作为参数,如果提供一个int来代替,D模板比较(template-matching)算法会失败。这是典型的"template not found"(模板找不到)错误的原因。也要注意到在当前不能被IFTI支持名称重载,因此在这里也不应用。

为了限制命名空间污染,高度建议应用D的别名导入(import alias)机制来使用这个模块。

1
2
3
import Util = tango.text.Util;

auto s = Util.trim ("  foo ");

函数模板

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
trim (source)                               // 修剪空白
triml (source)                              // 修剪空白
trimr (source)                              // 修剪空白
strip (source, match)                       // 修剪元素
stripl (source, match)                      // 修剪元素
stripr (source, match)                      // 修剪元素
chopl (source, match)                       // 修剪模式匹配
chopr (source, match)                       // 修剪模式匹配
delimit (src, set)                          // 按定界符分离(delimssplit (source, pattern)                     // 按模式分离
splitLines (source);                        //按行分离 
head (source, pattern, tail)                // 分离到头和尾
join (source, postfix, output)              //结合文字片段
prefix (dst, prefix, content...)            // 把文字片段置于前面
postfix (dst, postfix, content...)          // 把文字片段置于后面
combine (dst, prefix, postfix, content...)  // combine lotsa stuff
repeat (source, count, output)              //重复source(源)
replace (source, match, replacement)        // 替换字符
substitute (source, match, replacement)     // 替换/移除匹配
count (source, match)                       //统计实例
contains (source, match)                    //是否包含字符?
containsPattern (source, match)             // 判断是否包含模式?
index (source, match, start)                //查找匹配索引 
locate (source, match, start)               // 查找字符
locatePrior (source, match, start)          // 查找前面的字符
locatePattern (source, match, start);       // 查找模式
locatePatternPrior (source, match, start);  // 查找前面的模式
indexOf (s*, match, length)                 // 低级查看
mismatch (s1*, s2*, length)                 // 低级比较
matching (s1*, s2*, length)                 // 低级比较
isSpace (match)                             //判断是否是空白?
unescape(source, output)                    //转换' \ '的前缀
layout (destination, format ...)            // 非常轻量级的 printf(格式化输出)
lines (str)                                 // foreach lines
quotes (str, set)                           // foreach quotes
delimiters (str, set)                       // foreach delimiters
patterns (str, pattern)                     // foreach patterns

请注意,在这个模块中谈及的任何'pattern'(模式)都引用一个字符模式,而且不是正则表达式描述符。要使用正则表达式操作使用Regex模块。

T[] trim(T)(T[] source) #
整理提供的数组,从两端剥离空白。返回原始内容的一个切片。
T[] triml(T)(T[] source) #
整理提供的数组,从左边剥离空白。返回原始内容的一个切片。
T[] trimr(T)(T[] source) #
整理提供的数组,从右边剥离空白。返回原始内容的一个切片。
T[] strip(T)(T[] source, T match) #
整理提供的数组,从两端剥离提供的匹配( match)。返回原始内容的一个切片。
T[] stripl(T)(T[] source, T match) #
整理提供的数组,从左手边剥离提供的匹配( match)。返回原始内容的一个切片。
T[] stripr(T)(T[] source, T match) #
整理提供的数组,从右手边剥离提供的匹配( match)。返回原始内容的一个切片。
T[] chopl(T)(T[] source, T[] match) #
通过从左手边剥离提供的匹配( match)切削源。返回原始内容的一个切片。
T[] chopr(T)(T[] source, T[] match) #
通过从右手边剥离提供的匹配( match)切削源。返回原始内容的一个切片。
T[] replace(T)(T[] source, T match, T replacement) #
用另一个元素替换一个元素的所有实例(在合适的地方)。
T[] substitute(T)(T[] source, T[] match, T[] replacement) #
source里替换( Substitute)所有匹配的实例。要移除而不替换就设 replacementnull
uint count(T)(T[] source, T[] match) #
统计所有 source里匹配的实例。
bool contains(T)(T[] source, T match) #
Returns whether or not the provided array contains an instance of the given match
bool containsPattern(T)(T[] source, T[] match) #
返回提供的数组是否包含给定的 match
uint index(T, U = uint)(T[] source, T[] match, U start = 0) #
返回下一个从 'start'位置开始的 'match'的实例的索引,如果没有匹配( match)就返回 source.length。参数 'start'默认为 0
uint rindex(T, U = uint)(T[] source, T match[] match, U start = uint.max) #
返回就在 'start'前开始的前一个匹配实例的索引,如果没有匹配就返回 source.length
参数 'start'默认 source.length
uint locate(T, U = uint)(T[] source, T match, U start = 0) #
返回从位置 'start'开始的下一个匹配实例的索引,如没有匹配就返回 source.length
参数 'start'默认为 0
uint locatePrior(T, U = uint)(T[] source, T match, U start = uint.max) #
返回就在 'start'前开始的前一个匹配实例的索引,如果没有匹配就返回 source.length
参数 'start'默认 source.length
uint locatePattern(T, U = uint)(T[] source, T[] match, U start = 0) #
返回从位置 'start'开始的下一个匹配实例的索引,如没有匹配就返回 source.length
参数 'start'默认为 0
uint locatePatternPrior(T, U = uint)(T[] source, T[] match, U start = uint.max) #
返回就在 'start'前开始的前一个匹配实例的索引,如果没有匹配就返回 source.length
参数 'start'默认 source.length
T[] head(T)(T[] src, T[] pattern, out T[] tail) #
按第一个模式实例分离提供的数组,返回合成的头和尾。模式从两个文字片段排除。如果一个文字片段没有找到,尾( tail)会变成 null,并且返回值是原始的数组。
T[] tail(T)(T[] src, T[] pattern, out T[] head) #
按最后的模式实例分离提供的数组,返回合成的头和尾。模式从两个文字片段排除。如果一个文字片段没有找到,头( head)会变成 null,并且返回值是原始的数组。
T[][] delimit(T)(T[] src, T[] set) #
无论定界符集合在哪里找到都分离提供的数组,返回合成的片段。定界符从每一个片段中排除。注意定界符是作为一个交替集合匹配而不是作为一个模式。按一个简单的定界符分离要比按一个选择集分离快得非常多。

:src内容在这个函数中不被复制,由切割代替。

T[][] split(T)(T[] src, T[] pattern) #
无论模式实例在哪里找到都分离提供的数组,返回合成的片段。模式从每一个片段中排除。
:src内容在这个函数中不被复制,由切割代替。
T[][] splitLines(T)(T[] src) #
转换文字成一系列行,这里的每一行用一个 \n\r\n组合识别。行末端从每个合成数组中剥离。
:src内容在这个函数中不被复制,由切割代替。
T[] join(T)(T[][] src, T[] postfix = null, T[] dst = null) #
合并一系列文字片段到一起,每个片段添加一个后缀模式。一个任选的输出缓冲器可以被提供用来避免堆活动 --它应该是大得足以容纳整个输出,否则将用堆来代替。
返回一个输出的有效切片,包含连结文字。
T[] prefix(T)(T[] dst, T[] prefix, T[][] src...) #
合并一系列文字片段到一起,每个片段前置一个前缀模式。一个任选的输出缓冲器可以被提供用来避免堆活动 --它应该是大得足以容纳整个输出,否则将用堆来代替。
注意 ,不像 join(),首先要指定输出缓冲区 ,这样尾随字符串集合可以被提供。
返回一个输出的有效切片,包含连结文字。
T[] postfix(T)(T[] dst, T[] postfix, T[][] src...) #
合并一系列文字片段到一起,每个片段添加一个任选的后缀模式。一个任选的输出缓冲器可以被提供用来避免堆活动 --它应该是大得足以容纳整个输出,否则将用堆来代替。
注意 ,不像 join(),首先要指定输出缓冲区 ,这样尾随字符串集合可以被提供。
返回一个输出的有效切片,包含连结文字。
T[] combine(T)(T[] dst, T[] prefix, T[] postfix, T[][] src...) #
合并一系列文字片段到一起,每个片段前置和 /或后置一个任选的字符串。一个任选的输出缓冲器可以被提供用来避免堆活动 --它应该是大得足以容纳整个输出,否则将用堆来代替。
注意 ,不像 join(),首先要指定输出缓冲区 ,这样尾随字符串集合可以被提供。
返回一个输出的有效切片,包含连结文字。
T[] repeat(T, U = uint)(T[] src, U count, T[] dst = null) #
把一个数组重复指定次数。一个任选的输出缓冲器可以被提供用来避免堆活动—它应该是大得足以容纳整个输出,否则将用堆来代替。
返回一个输出的有效切片,包含连结文字。
bool isSpace(T)(T c) #
判断参数是否是一个空白字符?
bool matching(T, U = uint)(T* s1, T* s2, U length) #
返回两个数组是否有匹配内容。
uint indexOf(T, U = uint)(T* str, T match, U length) #
返回 str中的第一个匹配的索引,一旦长度达到就失败。注意失败返回 'length' 成功返回以 0为基础的索引。
uint mismatch(T, U = uint)(T* s1, T* s2, U length)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值