提供: Japanese Scratch-Wiki

 
1行目: 1行目:
{{ひらがなヘッダ|もじれつをわける}}
+
{{ひらがなヘッダ}}
 
[[文字列]]を指定した文字で分割する方法を紹介する。
 
[[文字列]]を指定した文字で分割する方法を紹介する。
  
13行目: 13行目:
 
[抽出番号 v] を (検索開始位置) にする
 
[抽出番号 v] を (検索開始位置) にする
 
((keyword) の長さ) 回繰り返す
 
((keyword) の長さ) 回繰り返す
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operation)) にする
+
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operators)) にする
 
[抽出番号 v] を (1) ずつ変える
 
[抽出番号 v] を (1) ずつ変える
 
end
 
end
20行目: 20行目:
 
[] を [分割後 v] に追加する
 
[] を [分割後 v] に追加する
 
でなければ
 
でなければ
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operation)) で置き換える::list
+
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operators)) で置き換える::list
 
[検索開始位置 v] を (1) ずつ変える
 
[検索開始位置 v] を (1) ずつ変える
 
end
 
end
33行目: 33行目:
 
[抽出番号 v] を (検索開始位置) にする
 
[抽出番号 v] を (検索開始位置) にする
 
((keyword) の長さ) 回繰り返す
 
((keyword) の長さ) 回繰り返す
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operation)) にする
+
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operators)) にする
 
[抽出番号 v] を (1) ずつ変える
 
[抽出番号 v] を (1) ずつ変える
 
end
 
end
44行目: 44行目:
 
[] を [分割後 v] に追加する
 
[] を [分割後 v] に追加する
 
でなければ
 
でなければ
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operation)) で置き換える::list
+
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operators)) で置き換える::list
 
[検索位置 v] を (1) ずつ変える
 
[検索位置 v] を (1) ずつ変える
 
end
 
end
53行目: 53行目:
  
 
これをtargetの文字数分繰り返していく。
 
これをtargetの文字数分繰り返していく。
[[カテゴリ:スクリプトチュートリアル]]
+
[[カテゴリ:文字列チュートリアル]]
 +
{{デフォルトソート:もじれつをわける}}

2019年10月22日 (火) 13:42時点における最新版

このきじは ひらがなのページがありません。ごめんなさい。

文字列を指定した文字で分割する方法を紹介する。

チュートリアル

ここでは、文字列を指定した文字、文字列で分割していく方法を紹介する。(JavaScriptでいうsplitメソッドのような)

定義 (target) を (keyword) で分割 //targetが分割される文字列、keywordが分割する文字列
[分割後 v] のすべてを削除する::list //分割した後の結果はここに入ってます
[] を [分割後 v] に追加する
[検索開始位置 v] を (1) にする
((target) の長さ) 回繰り返す
[一時抽出 v] を[] にする
[抽出番号 v] を (検索開始位置) にする
((keyword) の長さ) 回繰り返す
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operators)) にする
[抽出番号 v] を (1) ずつ変える
end
もし < (keyword) = (一時抽出)> なら
[検索開始位置 v] を ((keyword) の長さ) ずつ変える
[] を [分割後 v] に追加する
でなければ
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operators)) で置き換える::list
[検索開始位置 v] を (1) ずつ変える
end
end

各部分の説明

Document stub.png この項目は、書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています。

検索

((target) の長さ) 回繰り返す
[一時抽出 v] を[] にする
[抽出番号 v] を (検索開始位置) にする
((keyword) の長さ) 回繰り返す
[一時抽出 v] を ((一時抽出) と ((target) の (抽出番号) 番目の文字::operators)) にする
[抽出番号 v] を (1) ずつ変える
end

この部分でまず、分割したい文字列から、「nからn+keywordの文字数までの文字列」を抽出している。このチュートリアルでは「一時抽出」という変数のことである。

分割処理

もし < (keyword) = (一時抽出)> なら
[検索開始位置 v] を ((keyword) の長さ) ずつ変える
[] を [分割後 v] に追加する
でなければ
[分割後 v] の ([分割後 v] の長さ::list) 番目を (([分割後 v] の ([分割後 v] の長さ::list) 番目::list) と ((target) の (検索開始位置) 番目の文字::operators)) で置き換える::list
[検索位置 v] を (1) ずつ変える
end

次に、「一時抽出」の文字がkeywordと同じか調べる。

同じならばそこで分割し、異なるならば次の処理にうつっていく。

これをtargetの文字数分繰り返していく。