一半君的总结纸

听话只听一半君

#11 如何去除( strip)字符串末尾的”换行字符”( “new-line-character”)?

当读取DOS 文件(file)的时候每行都是以 CR+LF 的一对字符结束的(这是缩写:Carriage Return 和 Line feed), ‘fgetline’ 命令知道如何移除 LF, 但是他不会去掉 CR. 我自己也遇到过这个问题.(lz没有试验,不知道现在还有没有问题)

你可以用 ‘match’ 命令外加正则表达式( regular expression)来去掉 CR 和/或 LF .

对应LF的转义字符( escape sequence)是 “\n“, 对应CR的是 “\r“. 所以可以这样:

$string = match( "^[^(\r\n)]*", $string );

上面的match的作用是从字符串中挑出 从头开始,一个一个的加入既不是CR也不是LF的字符,直到碰到第一个CR或者LF为止,然后把结果赋予 $string. 换句话说就是从字符串尾部去掉了\r或者\n. 这种方法速度很快很好用,即使是原字符串末尾没有 LF 或 CR 的时候也能用.

增强版:


s='lah lah \r \n '
s.strip()
# 结果是 'lah lah' , 比MEL简单多了

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: