Ruby:字符串处理函数

字符串处理函数
1.返回字符串的长度

str.length => integer

2.判断字符串中是否包含另一个串

str.include? other_str => true or false
"hello".include? "lo"   #=> true
"hello".include? "ol"   #=> false
"hello".include? ?h     #=> true

3.字符串插入:

str.insert(index, other_str) => str
"abcd".insert(0, ‘X‘)    #=> "Xabcd"
"abcd".insert(3, ‘X‘)    #=> "abcXd"
"abcd".insert(4, ‘X‘)    #=> "abcdX"
"abcd".insert(-3, ‘X‘)
-3, ‘X‘)   #=> "abXcd"
"abcd".insert(-1, ‘X‘)   #=> "abcdX"

4.字符串分隔,默认分隔符为空格

str.split(pattern=$;, [limit]) => anArray
" now‘s the time".split        #=> ["now‘s", "the", "time"]
"1, 2.34,56, 7".split(%r{,\s*}) #=> ["1", "2.34", "56", "7"]
"hello".split(//)               #=> ["h", "e", "l", "l", "o"]
"hello".split(//, 3)            #=> ["h", "e", "llo"]
"hi mom".split(%r{\s*})         #=> ["h", "i", "m", "o", "m"]
"mellow yellow".split("ello")   #=> ["m", "w y", "w"]
"1,2,,3,4,,".split(‘,‘)         #=> ["1", "2", "", "3", "4"]
"1,2,,3,4,,".split(‘,‘, 4)      #=> ["1", "2", "", "3,4,,"]

5.字符串替换

str.gsub(pattern, replacement) => new_str
str.gsub(pattern) {|match| block } => new_str
"hello".gsub(/[aeiou]/, ‘*‘)              #=> "h*ll*"     #将元音替换成*号
"hello".gsub(/([aeiou])/, ‘<\1>‘)         #=> "h<e>ll<o>"   #将元音加上尖括号,\1表示保留原有字符???
"hello".gsub(/./) {|s| s[0].to_s + ‘ ‘}   #=> "104 101 108 108 111 "

字符串替换二:

str.replace(other_str) => str
s = "hello"         #=> "hello"
s.replace "world"   #=> "world"

6.字符串删除:

str.delete([other_str]+) => new_str
"hello".delete "l","lo"        #=> "heo"
"hello".delete "lo"            #=> "he"
"hello".delete "aeiou", "^e"   #=> "hell"
"hello".delete "ej-m"          #=> "ho"

7.去掉前和后的空格

str.lstrip => new_str
" hello ".lstrip   #=> "hello "
"hello".lstrip       #=> "hello"

8.字符串匹配

str.match(pattern) => matchdata or nil

9.字符串反转

str.reverse => new_str
"stressed".reverse   #=> "desserts"

10.去掉重复的字符

str.squeeze([other_str]*) => new_str
"yellow moon".squeeze                  #=> "yelow mon" #默认去掉串中所有重复的字符
" now   is the".squeeze(" ")         #=> " now is the" #去掉串中重复的空格
"putters shoot balls".squeeze("m-z")   #=> "puters shot balls" #去掉指定范围内的重复字符

11.转化成数字

str.to_i=> str
"12345".to_i             #=> 12345

chomp和chop的区别:
chomp:去掉字符串末尾的\n或\r
chop:去掉字符串末尾的最后一个字符,不管是\n\r还是普通字符

"hello".chomp            #=> "hello"
"hello\n".chomp          #=> "hello"
"hello\r\n".chomp        #=> "hello"
"hello\n\r".chomp        #=> "hello\n"
"hello\r".chomp          #=> "hello"
"hello".chomp("llo")     #=> "he"

"string\r\n".chop   #=> "string"
"string\n\r".chop   #=> "string\n"
"string\n".chop     #=> "string"
"string".chop       #=> "strin"

split是String类一个类方法,我根据ri String.split提供的内容简单翻译一下。

----------------------------------------------------------- String#split

str.split(pattern=$;, [limit])       => anArray

------------------------------------------------------------------------

Divides _str_ into substrings based on a delimiter, returning an

array of these substrings.

将一个字符串用分隔符分割成一些子字符串,并返回一个包含这些子字符串的数组。

If _pattern_ is a +String+, then its contents are used as the

delimiter when splitting _str_. If _pattern_ is a single space,

_str_ is split on whitespace, with leading whitespace and runs of

contiguous whitespace characters ignored.

如果pattern部分一个字符串,那么用它作分割符来分隔,如果pattern是一个空格,那么在空格处分割,并且临近的空格被忽略。

If _pattern_ is a +Regexp+, _str_ is divided where the pattern

matches. Whenever the pattern matches a zero-length string, _str_

is split into individual characters.

如果pattern是个正则达式,那么在匹配pattern的地方分割,当pattern是长度为0的字符串,那么split将把字符串分割为单个字符

If _pattern_ is omitted, the value of +$;+ is used. If +$;+ is

+nil+ (which is the default), _str_ is split on whitespace as if `

‘ were specified.

如果pattern被忽略,将用$;来分隔,如果$;没有设置(就是在默认状态),split将制定空格‘ ‘

If the _limit_ parameter is omitted, trailing null fields are

suppressed. If _limit_ is a positive number, at most that number of

fields will be returned (if _limit_ is +1+, the entire string is

returned as the only entry in an array). If negative, there is no

limit to the number of fields returned, and trailing null fields

are not suppressed.

如果limit参数被忽略,跟踪空段被抑制,如果limit是个正数,那么至多返回limit个字段(如果是1,那么将整个字符串作为一个字段返回),如果是个负数,那么跟踪空段不被抑制。

" now‘s      the time".split            #=> ["now‘s", "the", "time"]

" now‘s      the time".split(‘ ‘)       #=> ["now‘s", "the", "time"]

" now‘s      the time".split(/ /)       #=> ["", "now‘s", "", "the", "time"]

"1, 2.34,56, 7".split(%r{,\s*}) #=> ["1", "2.34", "56", "7"]

"hello".split(//)                   #=> ["h", "e", "l", "l", "o"]

"hello".split(//, 3)                #=> ["h", "e", "llo"]

"hi mom".split(%r{\s*})             #=> ["h", "i", "m", "o", "m"]

"mellow yellow".split("ello")       #=> ["m", "w y", "w"]

"1,2,,3,4,,".split(‘ ,‘)             #=> ["1", "2", "", "3", "4"]

"1,2,,3,4,,".split(‘,‘, 4)          #=> ["1", "2", "", "3,4,,"]

"1,2,,3,4,,".split(‘,‘, -4)         #=> ["1", "2", "", "3", "4", "", ""]

如果包含特殊字符,注意转义

"wo | shi | yi | ge | bing".split(/\s*\|\s*)              #竖杠别忘了转义

还有它和String.scan的区别,split中的pattern是分隔符,而scan中的pattern指的是要匹配的东西。

"123=342=4234=523421=6424".scan(/\d+/)     #=>     ["123","342","4234","523421","6424"]

如果匹配项被括起来,那么则会保留分割符,例如:

"Three little words".split(/\s+/)    #===>["three","little",words"]

"Three little words".split(/(\s+)/)      #===>["three"," ","little"," ","words"]    保留了空格

时间: 2024-12-14 17:17:53

Ruby:字符串处理函数的相关文章

面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”. 一.需要分析 1.输入为一个字符串和字节数,输出为按字节截取的字符串-------------->按照字节[byte]截取操作字符串,先将String转换成byte类型 .2.汉字不可以截半----------------------------------

PHP内置的字符串处理函数

字符串的特点    1.其他类型的数据用在字符串类型处理函数中,会自动将其转化成字符串后,在处理 <?php echo substr("abcdefghijklmn",2,4),"<br>"; //cdef //使用数字会自动转化为字符串 echo substr(123456,2,4); //3456 ?> 2.可以将字符串视为数组,当做字符集合来看待 <?php $str="abcdefg"; //下面这两种方法都

字符串处理函数总结

字符串函数(String processing function)也称为字符串处理函数,指的是编程语言中用来进行字符串处理的函数. C语言中常用的字符串函数: strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NUL结束的字符串复制到dest所指的数组中. 返回指向dest结尾处字符(NUL)的指针. 举例: // strcpy.c #include <syslib.

编写实现字符串拷贝函数strcpy()完整版

有个题目编程实现字符串拷贝函数strcpy(),很多人往往很快就写出下面这个代码. void strcpy( char *strDest,char *strSrc ) { while(( *strDest++ = * strSrc++) != '\0' );//逐个赋值字符串数组中的数据,知道字符串结束 } 其实仔细看看这个实现过程并不完美,严格来说非常不严谨,我们可以完善一下. char * strcpy( char *strDest, const char *strSrc )//将源字符串加

几个常见字符串处理函数的实现原理

字符串是一种常见的数据结构,对字符串的处理又可以十分灵活,所以在实际开发,尤其是非数值处理中,字符串的应用非常广泛.虽然很多字符串操作都封装在了函数库里,应用程序可以直接通过调用库函数来实现字符串处理,然而对于开发者而言,若能了解其底层实现原理,对于应用编程而言还是大有裨益的. 这篇文章主要介绍几种常用的字符串处理函数的实现原理. 一.strlen函数 strlen函数:计算字符串的实际长度,不包括'\0'. 算法:从第一个字符开始扫描,直到遇见第一个'\0',停止扫描,返回字符串长度. 代码如

php 字符串分割函数split

说明 array split    ( string $pattern   , string $string   [, int $limit  ] ) 本函数返回一个字符串数组,每个单元为   string 经区分大小写的正则表达式   pattern 作为边界分割出的子串.如果设定了   limit,则返回的数组最多包含   limit 个单元,而其中最后一个单元包含了   string 中剩余的所有部分.如果出错,则   split() 返回 FALSE. Example #1 split(

c#中的字符串查找函数

indexOf()方法,查找某字符串在一个字符串内的位置,没有则返回-1string aa="abcdef";int a=aa.indexOf("bc");//a会等于1int b=aa.indexOf("a");//b会等于0int c=aa.indexOf("g");c会等于-1所以你只要判断返回出来的int值是不是小于0就知道这个字符串里有没有包含指定的另一个字符串 c#中的字符串查找函数,布布扣,bubuko.com

C字符串处理函数

void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.如果复制过程中遇到了字符c则停止复制,返回指针指向dest中字符c的下一个位置:否则返回NULL. void *memcpy (void *dest, const void *src, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.返回指针为dest的值. void *memchr

php常用字符串处理函数

PHP 字符串函数是 PHP 核心的组成部分.无需安装即可使用这些函数. 常用的字符串处理函数: str_replace():替换字符串中的一些字符(对大小写敏感). str_repeat():把字符串重复指定的次数. strlen():返回字符串的长度. stripos():返回字符串在另一字符串中第一次出现的位置(对大小写不敏感). str_split():把字符串分割到数组中. trim():移除字符串两侧的空白字符和其他字符. ltrim():移除字符串左侧的空白字符或其他字符. rtr