〜 テキスト 〜
テキスト内の特定キーワード数を取得

instr命令・関数を用いて、特定のテキストが幾つ存在するかをカウントします。
総数を返すだけ、というのでは用途が限られすぎて使い辛くありますが、
エディタ系の全てを検索するロジックとしての方法がわからない方は、
モジュール内で行っていることを参考に組んでみてください。
	

getwordnum 検索対象変数, 検索文字列
検索対象変数検索元の文字列を格納している変数を指定する。
検索文字列検索する文字列を指定する。
尚、検索結果(取得総数)は、statに代入される。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#module
#deffunc getwordnum val, str
	mref s, 24 : mref keyword, 33
	mref stt, 64
	i = 0, 0, 0 // キーワード総数, 検索開始位置, 取得位置
	strlen i.3, keyword
	repeat
		instr i.2, s, keyword, i.1
		if i.2 = -1 : break
		i.0++
		i.1 += i.2 + i.3
	loop
	stt = i
	return
#global

	string = "すもももももももものうち"
	word = "もも"
	getwordnum string, word // 対象ワードの数を数える
	dialog "「" + string + "」の中に含まれている「" + word + "」の数は" + stat + "個です"

取得総数 = getwordnum(検索対象変数, 検索文字列)
取得総数検索結果(取得総数)の受取先を指定する。
検索対象変数検索元の文字列を格納している変数を指定する。
検索文字列検索する文字列を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#module
#defcfunc getwordnum var s, str keyword, local i
	i = 0, 0 // キーワード総数, 検索開始位置
	repeat
		if instr(s, i.1, keyword) = -1 : break
		i.0++
		i.1 += instr(s, i.1, keyword) + strlen(keyword)
	loop
	return i
#global

	string = "すもももももももものうち"
	word = "もも"
	count = getwordnum(string, word) // 対象ワードの数を数える
	dialog "「" + string + "」の中に含まれている「" + word + "」の数は" + count + "個です"
	end