yuuki blog

プログラミング をアプトプットしています。

sliceメソッド Ruby

sliceメソッド

sliceメソッドを用いることで、配列や文字列から指定した要素を取り出すことができます。

切り取りたい部分を指定する方法は下記の表記です。

  • 「インデックスを一つ 指定」して、該当部分の要素を切り出す方法。
  • 「指定位置から指定の長さを指定」して、該当部分の要素を切り出す方法。
  • 「範囲を指定」して、該当部分の要素を切り出す方法。

 

slice!メソッド

もとの配列や文字列を変化させるメソッドです。slice!メソッドを使用することで、指定した要素を削除することができます。

string = "abcdefg"
string.slice!(1) #=> "b"
string.slice!(1..4) #=> "bcde"
string.slice!(/c.*e/) #=> "cde"
string.slice!("b") #=> "b"
string #=> "abcdefg"
puts string

インスタンスの生成(自分用メモ)

  class Fruits
    @@sum = 0  # クラス変数@@sumの定義

    def self.get_sum   # クラスメソッドget_sumの定義
      puts "合計の価格は#{@@sum}円です"
    end

    def initialize(name, price)
      @name = name       # インスタンスの生成 newメゾットで生成引数としてname,priceを渡します 
@price = price
@@sum += price   # @@sumに価格を足し合わせる
end
end
apple = Fruits.new("リンゴ", 120) # インスタンスの生成
orange = Fruits.new("オレンジ", 200)
strawberry = Fruits.new("イチゴ", 60)

Fruits.get_sum # get_sumの呼び出し
            # 合計価格の@@sumが表示されます

クラス変数

クラス変数とはそのクラス内で定義された変数であり、@@から始まる変数となります。

クラス変数はクラスメソッド、インスタンスメソッド、また子クラスから読み書きできる変数です。

クラス変数はクラス側で変数が既に入っているので、インスタンス生成前に変数に値が入っています。

インスタンス変数とは

インスタンス変数とはそのクラスのインスタンスで使用できる変数です。@から始まる変数となります。

インスタンス変数は同じインスタンス内部で共有する変数となります。インスタンス変数はインスタンス生成時に値が入ります。

今回では、インスタンス変数nameとpriceです。initializeメソッドの中で定義します。initializeメソッドはnewメソッドの引数を受け取ることができます。

名前と価格をnewメソッドから受け取ってインスタンス変数に代入しましょう。

selfとは

Rubyのselfとは、オブジェクトそのものを指しています。

今回では、Fruitsクラスがあり、そのクラス内のメソッドで、selfを参照している状況で、オブジェクトを作成し、そのメソッドを実行するとFruitsのオブジェクトであることが分かります。

 self をメソッドに付与する事で、インスタンスメソッドではなく、クラスメソッドとして定義する事もできます。

論理演算子

「a と bが等しい」且つ「c は dよりも大きい」など複数の状態が組み合わさって最終的にその式が `true` なのか `false` なのかを記述するには論理演算子を使います。

 

論理演算子一覧

  • &&  :左部と右部がそれぞれ `true` であれば、 `true` を返却します。
  • ||    :左部、あるいは右部いずれかが `true` であれば、 `true` を返却します。
  • !   :`true` であれば、 `False` を返却します

and演算子

f:id:yuukii5:20201012081400p:plain

"True"を返却します。

 

or演算子

f:id:yuukii5:20201012081508p:plain

"True"を返却します。

 

not演算子

f:id:yuukii5:20201012081539p:plain

"False"を返却します。

HTMLの基本構造 (テンプレ)

基本的なHTMLの雛形を作ってみました

<!DOCTYPE html>

<html lang="ja">

<head>

<meta charset="utf-8">

<title>タイトル</title>

<link rel="stylesheet" href="style.css">

<script src="javascript.js"></script>

</head>

<body>

<header>

</header>

</html>

 

・ DOCTYPE ... ドキュメントタイプ宣言

・ html ... HTML文書全体 ”ja”は日本語

・ head ... ヘッダ情報

・ meta ... メタデータ ”utf-8”はポピュラーな文字コード

・ title ... タイトル

・ link ... 外部リソース  ”rel="stylesheet" href="style.css"”はstyle.cssを呼び出し

・ script ... スクリプト src="javascript.js"はJavaScriptを読み込む要素

・ body ... HTML文書の本質情報

正規表現 Rails (正規表現)

そもそも正規表現とは?

正規表現とは、わかりやすく定義すると、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを検出するための表現方法です。

基本的な正規表現一覧

                               基本的な正規表現を一覧にしました

. 任意の1文字 にマッチします。
+ 直前の文字が 1回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
* 直前の文字が 0回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
? 直前の文字が 0個か1個 の場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
+? 直前の文字が 1回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
*? 直前の文字が 0回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
?? 直前の文字が 0個か1個 の場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
| いずれかの条件 (OR条件) として使われます。
\ 直後の正規表現記号を エスケープ します。
[...] 角括弧に含まれるいずれか1文字にマッチします。
[^...] 角括弧に含まれる文字以外にマッチします。
(...) 文字を1つのグループにまとめることができます。
{n} 直前の文字の桁数を指定できます。
{n,} 直前の文字の最小桁数のみ指定できます。
{n,m} 直前の文字の最小桁数と最大桁数を指定できます。
最長一致。条件に合う最長の部分に一致します。
{n,m}? 直前の文字の最小桁数と最大桁数を指定できます。
最短一致。条件に合う最短の部分に一致します。

                                             定義済みの正規表現

文字 説明
\t タブ
\r 改行。CR(Carriage Return:0x0D)
\n 改行。LF(Line Feed:0x0A)
\d すべての数字
\D すべての数字以外の文字
\s 垂直タブ以外のすべての空白文字
\S すべての非空白文字
\w アルファベット、アンダーバー、数字
\W アルファベット、アンダーバー、数字以外の文字

特定の位置関係の正規表現

文字 説明
^ 直後の文字が行の先頭にある場合にマッチします。
$ 直前の文字が行の末尾にある場合にマッチします。
\< 単語の先頭にマッチします。
\> 単語の末尾にマッチします。
\b 単語の先頭か末尾にマッチします。
\B 単語の先頭か末尾以外にマッチします。
\A ファイルの先頭にマッチします。
\z ファイルの末尾にマッチします。
\G 直前の一致文字列の末尾にマッチします。

                                    置換文字列で使える正規表現

文字 説明
\0 一致した文字列全体に置換します。
\1 ~ \9 一致した文字列の1~9番目に対応する文字列に置換します。
\l 次の1文字を小文字に変換します。
\L...\E 挟まれた文字列を小文字に変換します。
\u 次の1文字を大文字に変換します。
\U...\E 挟まれた文字列を大文字に変換します。 

正規表現 rails (gsub)

そもそも正規表現とは?

正規表現とは、わかりやすく定義すると、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを検出するための表現方法です。

gsub

gが意味するのはグローバルマッチという言葉です。

文字列内に指定した文字が複数含まれている場合、その全てを置換するという意味になります。
subとの違いはパターンにマッチしたも全てを置換することです。subは最初だけです。

f:id:yuukii5:20201009070534p:plain

正規表現とは(Ruby)(matchメゾット)

そもそも正規表現とは?

正規表現とは、わかりやすく定義すると、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを検出するための表現方法です。

match

matchとはStringクラスのメソッドです。

引数に指定した文字列が、引数で指定した正規表現に合致するかをチェックするためのメソッドです。

指定した文字列がMatchDataというオブジェクトが戻り値で得られます。また、含まれていない場合は、戻り値としてnilが得られます。

 

f:id:yuukii5:20201008075022p:plain

MatchData

マッチした文字列はまず、MatchDataという種類のオブジェクトで返されます。MatchDataから実際にマッチした文字列などを取り出したい場合は、配列から最初のデータを取り出す時と同様の形で取り出すことができます。

f:id:yuukii5:20201008075035p:plain