——想找谁就找谁
提到Google,大家可能会想到很多东西,因为Google的分享精神的确给大家带来很多好的产品。但是,在Google所有的产品中,没有哪一项是可以和它的Search Engine相提并论的。我在本文中所要谈论的就是Google的搜索技巧,千万不要被这个古老而枯燥的话题而吓住,我在这里谈论的可不是一般的搜索技巧哦!
我是一名编辑,不断地认识IT界的技术精英是工作的需要。然而,网络是我们与这些技术精英们结识的重要途径。对于绝大多数的网名来说,大多都有一个固定的nickname(网名或昵称),当然,有的人不只一个。我们是否曾经有这样的经历,我们在某个论坛上发现了一个技术牛人,但是只有他的nickname,而没有其他的联系方式。此时,我们很想与他取得联系,但是却苦于没有他的联系方式。在这种情况下,我们第一个想到的会是Google。如果这个人在网上名气很大或者是很活跃,借助强大的Google,我们一般都能与这个人取得联系。但是对于那些沉默在网络中的技术高手,有时候Google也无能为力。遇到这样的情况怎么办?请Google Group帮忙吧!
关于Google Group,大家知道得更多的可能是它的论坛功能。当然,它的论坛功能是非常强大的,这也是它吸引无数用户的重要原因之一。如果你是Google Group的忠实用户,你一定知道几乎所有的IT技术领域都在Group 上安家了。是的,的确是这样。如果不信,你去论坛上Google一下便知。一般搞技术的人,尤其是牛人,都会加入相关领域的某个Google Group。只要他曾在某个Google Group中发过贴,我们在Google Group的论坛搜索中输入目标对象的nickname,我们便会找到他发的帖子。找到了这个帖子,我们就找到了它的主人,我们就可以把他的Gmail找出来。
下面请允许我做一个简单的示范。也许你曾经在网上看到一个nickname为linux1689的家伙,你想和他取得联系,可是他的知名度又不高,不足以让Google找到他怎么办呢,那我们就用Google Group的搜索功能试试吧。具体步骤如下所示:
我的第一个Ruby程序(2)
第三阶段功能描述:
查找任意文件中的任意字符串,并返回该字符串所在文件名称、该字符串所在的行号以及该行的内容。
filename = ARGV[0]
file = File.open(filename,'r')
end
第四阶段功能描述:
查找任意多个文件(这些文件的名称必须在命令行中指定)中的任意字符串,并返回该字符串所在文件名称、该字符串所在的行号以及该行的内容。
find_string = ARGV[0]
def find(find_string, filename)
end
if ARGV.length == 0
elsif (ARGV.length - 1) == 0
end
for i in 1..(ARGV.length - 1)
end
我的第一个Ruby程序,功能逐渐由简单到复杂:
第一阶段功能描述:
查找指定文件中的指定字符串,并返回该字符串所在的行号以及该行的内容。
file = File.open('text_01.txt','r')
file.closed
上面这个程序还可以简化为:
File.open('text_01.txt', 'r').grep(/yang/) do |line|
puts 'line: #{$.} #{line}'
end
第二阶段功能描述:
查找指定文件中的任意字符串,并返回该字符串所在的行号以及该行的内容。
file = File.open('text_01.txt','r')
file.close
puts lines
6.
abs方法的作用是取得调用它的数字对象的绝对值。例如:
a = -123
a.abs
(-123).abs
注意,abs(num)这种表达方式是错误的。
7.
downto()方法是upto()方法的逆方法。downto()方法有一个参数,调用它的对象的值它的参数的值将与构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。
例如:
20.downto(15) { |i| print i, “
输出结果:20
8.
该方法的形式为:a.step(b,c) {block},它有两个参数,其中第一个参数b与调用该方法的数字对象b构成一个range。相当于是一个以a为首项,b为末项,c为公差的一个等差数列。step方法的作用就是将该等差数列的各项分别传入block中,即进行迭代。
例如:
10.step(20,2) {|i| print i, “,”}
输出结果:
10,12,14,16,18,20
注意,从数学的意义上讲,在setp方法中并不要求b = n*c成立(n为整数),只需要满足a < b成立即可。
例如:
12.step(26,5.1) {|i| print i, “,”}
输出结果:
12.0,17.1,22.2
4.
upto()方法会有一个参数,它的参数的值将与调用它的对象的值构成一个range,然后再将该range内的值依次赋值给其后block中的变量。该方法是整数支持的集中常用的迭代器之一。
例如:
3.upto(8) { |a| print a }
输出结果为:
345678
5.
inject方法可以遍历集合中的所有成员以累计出一个值,一般地,他可以求得集合中元素的和或积。例如:
[2,4,6,8].inject(0) { |sum,element| sum + element
}
[2,4,6,8].inject(1) { |product,element| product * element
}
上述两条语句展示了求集合中元素的和或积的方法。
inject方法的工作原理:
(1)
(2)
根据上述说明,可以很容易得出下面这些表达式的结果:
[2,4,6,8].inject(3) { |sum,element| sum + element
}
[2,4,6,8].inject(2) { |product,element| product * element
}
[2,4,6,8].inject { |sum,element| sum + element
}
[2,4,6,8].inject { |product,element| product * element
}
调用inject方法的是一个集合,这个集合可以是数值Array,同时它还可以是range,例如:
(2..5).inject(3) { |sum,element| sum + element
}
(2..5).inject(2) { |product,element| product * element
}
该集合也可以是数值Array的一部分,例如:
a = [2,4,6,8,10] .
a[0,2].inject(3) { |sum,element| sum + element }
输出结果:9
1.
该方法是字符串类String的一个方法,对所有字符串都适用。它的作用是将调用该方法的字符串的首字母改为大写。举例如下:
s = “ruby”
s.capitalize
又如:
def say_goodnight(name)
result = 'Good night, #{name.capitalize}'
#capitalize将参数name所代表的字符串的首字母改为大写
return result #其实这条语句是多余的,因为一个方法如果没有指定返回值,则默认返回最后一个表达式的值
end
puts say_goodnight('mum')
输出结果:
Good night,Mum
2.
each方法经常与block一起使用,它的最大好处能够在某冲情况下取代for循环的功能。each方法会将调用它的对象中的所有元素依次赋给与each方法相关联的block的变量。
例如:
(‘a’..’e’).each {|char| print char}
在上面的例子中,range对象(‘a’..’e’)调用each方法,each方法将(‘a’..’e’)对象的每个值依次赋给block {|char| print char}中的char变量。
再来看下面这个例子:
file = File.open(“filename”)#打开名称为filename的文件,并将其内容写入到file中
file.each {|line|
puts line
}
file.close
输出结果:
this is line one
this is line two
this is line three
and so on……
3.
调用times方法的一般是具体的数字(整数)对象,times会按照对象的要求来指定其后block的执行次数。该方法是整数支持的集中常用的迭代器之一。
例如:
5.time { print “*” }
输出结果:
*****
你是不是经常会有这样的苦恼?一款自己很喜欢的软件,用了30天后(或者更短)它过期了,如果你不给它的著作权所有者付费,你就别想再用它了。这时你心里肯定会很不爽,怎么办呢?你肯定不会为了再装这一款软件而去重装系统,你可能也更不会去购买这款软件的使用权。不用着急,让我来告诉你一个很简单的方法吧!
在介绍这个方法之前,请允许我简单叙述一下共享软件与免费软件的区别:
免费软件:没有功能、时间、功能方面的限制,不要钱。软件著作权属于作者,但是用户可以自由使用。
共享软件:有次数、时间、功能方面的限制“,要花钱。用户可以使用部分软件功能 想使用全部功能需要注册
如果你心爱的软件是一款有时间限制的共享软件,此时你不必再为它的使用时间而担心。只要你明白它为什么会在你的电脑中会过期,你就一定会找到解决的办法。一般的软件在安装过程中,它都会将自身的信息写入到系统的注册表中,注册表会完全监控该软件的使用情况。为了解决共享软件过期的问题,我们可以从修改系统的注册表入手。
Step one
Step two
Step three
Step three
呵呵,补充一点,建议在执行这四个步骤前,先在控制面板中将该软件卸载掉。
1.定义一个由a、b、c······26字母组成的字符串practice1,编写一个程序,通过对字符串practice1的操作,形成一个新的字符串practice2,其值为“broadview”,即pracitce2=”broadview”。
2.sr=“1234567890”,分别求下列各表达式的值:
1)
2)
3)
4)
5)
3. 利用三引号定一个多行字符串(至少3行),并计算该字符串的长度。
4. 定义一个字符串pracitce3=”Iamagoodstudent!”,编写一个程序,通过对pracitce3进行相关操作,构造一个新字符串pracitce4= “I am a good student!”。
5.定一个字符串pracitce5=’abcdef\n’,编写一个程序,通过对pracitce5进行相关操作,构造一个新字符串pracitce6=’abcdef’,使这个字符串中不包含换行符。
6.阅读下列程序:
计算变量c的值。
| 分类:电脑百科 |
5.find方法
find方法的作用是找到字符串中指定字符或字符片段所对应的索引值。与上述其他方法不一样,find方法必须带一个参数,否则该方法无效。关于该方法的具体用法请参考下面的例2-27。
例2-27
string15.find(“a”)
string15.find(‘d’)
string15.find(‘ss’)
其执行结果如图2-27所示。
图2-27
从上例中可以看出,find方法找出的是字符串中指定字符或者是字符片段所对应的索引值。但是这里有几点需要格外注意:1.find方法一般是从字符串的开头开始寻找指定的字符或者是字符片段,当找到第一个指定的目标后,该方法不再寻找下一个目标;2.指定的字符片段,在计算索引值的时候被当成一个字符来处理,例如字符片段’ss’被当成一个字符处理,故其索引值为5。
6.atoi方法
atoi方法是将由数字构成的字符串中的数字字符转换为数字。与其他字符串的方法不一样,使用该方法前,必须调用Python中的字符串工具模块string,具体操作如例2-28所示。
例2-28
图2-28
注意,string是Python中内置的字符串工具模块,而不是一般的字符串名称。该字符串中不仅包含atoi方法,而且也包含上述所有的字符串方法。
3.split方法
split方法是将字符串中的字符按照令牌字符(所谓令牌字符是指:给定字符串中的任何字符,字符串将按照整个字符进行拆分)分隔开。令牌字符可以是任何空白字符,其中包括空格符、制表符和换行符等,默认的令牌字符为空白字符。使用slipt方法可以将一个字符串拆分为许多个字符串。
例2-24
其结果如图2-24所示。
图2-24
在上例中,split方法没有指定令牌字符,故其采用默认的令牌字符空格。即string11是按照空格字符进行拆分的。
例2-25
string12.split(‘:’)
其结果如图2-25所示。
图2-25
上例中,split方法的令牌字符不再是默认字符,它被指定为冒号“:”,即字符串string11中的字符都以冒号分隔符分开,拆分为许多个小的字符串。
4.join方法
join 方法的作用与 split 方法相反, 可以使多个短字符串序列形成一个长字符串。join方法也需要指定令牌字符,这些短字符串会以指定的令牌字符为连接字符,然后形成一个长字符串。
例2-26
string14=(' 0’,’1’,’2’,’3’)
string13.join(string14)
图2-26