Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
[DMY] [VB] [VB6] [Python] [C#] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [CE] [LTSA]
[自動化] [Qt] [OCaml] [3Dプリンタ] [TOOLS] [RAA] [Forge]
  [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [EA] [マクロ]

2006-11-26

文字列中で指定したパターンにマッチする部分を置換する

| 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 を含むブックマーク はてなブックマーク - 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 のブックマークコメント

文字列中で指定したパターンマッチする部分を置換するにはString#sub、String#gsubメソッドを使用します。 String#subメソッドは文字列中で最初にマッチした部分だけを置換しますが、String#gsubメソッドはマッチする全ての部分を置換します。パターンには正規表現も指定できます。

s = "Apple Banana Apple Orange"

p s.sub("Apple", "Pine") #=> "Pine Banana Apple Orange"

p s.gsub("Apple", "Pine") #=> "Pine Banana Pine Orange"

String#sub、String#gsubメソッドにはそれぞれ破壊的メソッドString#sub!、String#gsub!が用意されています

Rubyで簡単なHTTPサーバ

| Rubyで簡単なHTTPサーバ - Rubyの魔神 を含むブックマーク はてなブックマーク - Rubyで簡単なHTTPサーバ - Rubyの魔神 Rubyで簡単なHTTPサーバ - Rubyの魔神 のブックマークコメント

Rubyで簡単なHTTPサーバを作ろうと思って調べてみました。

webrickを使えば、あっというまにできました。

#!ruby
require 'webrick'

srv = WEBrick::HTTPServer.new({
  :DocumentRoot => './',
  :BindAddress => '127.0.0.1',
  :Port => 10080})
srv.start
Rubyで簡易HTTPサーバ (山本隆の開発日誌)

http://www.hyuki.com/d/200511.html#i20051111184206

require 'socket'

header = "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n"
form = "<form action='/'><textarea name='m'></textarea><input type='submit'></form>"

server = TCPServer.open(8888)
while true
  socket = server.accept
  request = socket.readline
  socket.write "#{header}<html><pre>#{request}</pre>#{form}</html>"
  socket.close
end

ワイルドカードにマッチしたファイル全てに処理を行う

| ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 を含むブックマーク はてなブックマーク - ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 のブックマークコメント

Dir.glob("**/*.txt") do |file|
  puts file
end
 ワイルドカードにマッチしたファイル全てに処理を行う

Dir::globメソッドにより指定したワイルドカードを展開し、マッチしたファイルの一覧を取得することができます。以下のようにするとマッチした全てのファイルに対して順番に処理を行うことができます。

Dir::glob("/home/take/public_html/*.html").each {|f|
  # ここにマッチしたファイルに対して行う処理を記述する
  # この例ではファイル名とファイルのサイズを標準出力へ出力している
  puts "#{f}: #{File::stat(f).size} bytes"
}

ワイルドカードに**/を指定するとサブディレクトリ配下のファイルもマッチします。以下の例では/home/take/public_html配下にある*.htmlのファイル名とファイルサイズを標準出力へ出力します。

Dir::glob("/home/take/public_html/**/*.html").each {|f|
  # ここにマッチしたファイルに対して行う処理を記述する
s  # この例ではファイル名とファイルのサイズを標準出力へ出力している
  puts "#{f}: #{File::stat(f).size} bytes"
}

ワイルドカードには以下のものがあります。

*p2*
    空文字列を含む任意の文字列と一致します。 
?
    任意の一文字と一致します。
[ ]
    []内のいずれかの文字と一致します。A-Zのように指定すると範囲を表します。[] が ^の場合、そこに含まれない文字と一致します。
{ }
    {}内で,で区切られた文字列の組合せに展開します。例えばfoo{a,b,c}はfooa, foob, foocに展開されます。他のワイルドカードと異なり、展開結果のファイルが存在している必要はありません。 ]
**/
    ディレクトリを再帰的に辿りマッチを行います。例えば、foo/**/ はfoo/bar/、foo/bar/hogeなど、配下の全サブディレクトリとマッチします。 

引数はARGV配列に入る

| 引数はARGV配列に入る - Rubyの魔神 を含むブックマーク はてなブックマーク - 引数はARGV配列に入る - Rubyの魔神 引数はARGV配列に入る - Rubyの魔神 のブックマークコメント

http://homepage1.nifty.com/~tetsu/ruby/learn/echo.html#argv

#! /usr/local/bin/ruby

ARGV.each do |i|
  print i, ' '
end

print "\n"

電話番号4分割ツール

| 電話番号4分割ツール - Rubyの魔神 を含むブックマーク はてなブックマーク - 電話番号4分割ツール - Rubyの魔神 電話番号4分割ツール - Rubyの魔神 のブックマークコメント

f1=File.open("telno1.txt","w")
f2=File.open("telno2.txt","w")
f3=File.open("telno3.txt","w")
f4=File.open("telno4.txt","w")

infile = open("telno.txt")
i=0
infile.each { |line|
	print line
	if i % 4 == 0 then
		f1.write line
	elsif i % 4 == 1 then
		f2.write line
	elsif i % 4 == 2 then
		f3.write line
	elsif i % 4 == 3 then
		f4.write line
	end
	i = i + 1
}

ファイル読み込み

| ファイル読み込み - Rubyの魔神 を含むブックマーク はてなブックマーク - ファイル読み込み - Rubyの魔神 ファイル読み込み - Rubyの魔神 のブックマークコメント

Ruby:
infile = open("file")
while infile.each
  print $_
end

または
infile = open("file")
infile.each { |line|
  print line
}

または
foreach ("file") { |line|
  print line
}

現在時刻表示

| 現在時刻表示 - Rubyの魔神 を含むブックマーク はてなブックマーク - 現在時刻表示 - Rubyの魔神 現在時刻表示 - Rubyの魔神 のブックマークコメント

#!/usr/local/bin/ruby

t=Time.now

printf("now %d/%d/%d %d:%d:%d \n",t.year,t.month,t.day,t.hour,t.min,t.sec)


トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061126