スクリプト/いろいろな文字列操作の関数
最終投稿者:
cfm_
更新:2016/03/19 18:38:14
cfm_
更新:2016/03/19 18:38:14
いろいろな文字列操作関数です。
==============注意==============
エラーチェックをしていないため、次のような使い方は控えてください。
最後にテストスクリプトがあります。使い方がよくわからない方は参考にしてください。
====================================
==============関数一覧==============
====================================
テストスクリプト
ツイート
==============注意==============
エラーチェックをしていないため、次のような使い方は控えてください。
- 引数に空の文字列を渡す(""のこと)
- str_left("aa",-1)のような、正しくない使い方をする
- 関数内で呼び出している別の関数が、上に記述されていない or 存在しない
最後にテストスクリプトがあります。使い方がよくわからない方は参考にしてください。
====================================
==============関数一覧==============
文字列の長さを取得 str_len(string)
文字列の、指定位置の文字列を取得 str_mid(string,start,len)
(上と同じ) str_mid2(string,from,to)
文字列の左端から指定文字数を取得 str_left(string,len)
文字列の右端から指定文字数を取得 str_right(string,len)
2つの文字列が等しいか確かめる str_equal(string1,string2)
ある文字列がどこに存在するかを取得 str_instr(string1,string2)
文字列を全て置き換える str_replace(string,find,replace)
文字列が数値("-50.3"など)かどうか確かめる str_isnumeric(string)
渡した文字列を複数個つなげた文字列を取得 str_string(string,number)
文字の種類を変換(詳細はスクリプトへ) str_conv(string,conversion)
先頭の空白を削除する str_LTrim(string)
#文字列の長さを取得
def str_len(string)
return getArrayLength(splitString(string,""))
end
#文字列[string]の[start]字目から[length]字の文字列を取得
#[length]が0以下のとき、[start]字目以降の全ての文字列を返す
#[start]が[string]内にあるときのみ、取得位置が[string]から出ていても文字がある分だけ取得。
def str_mid(string,start,len)
len2=str_len(string)
if start+len-1>len2 then len=len2-start+1;end
if len>0 then return joinArray(sliceArray(splitString(string,""), start-1, len), "") else return joinArray(sliceArray(splitString(string,""), start-1, str_len(string)-start+1), "");end
end
#文字列[string]の[from]字目から[to]字目までの文字列を取得
def str_mid2(string,from,to)
return str_mid(string,from,to-from+1)
end
#文字列[string]の左から[len]字の文字列を取得
def str_left(string,len)
return joinArray(sliceArray(splitString(string,""), 0, len), "")
end
#文字列[string]の右から[len]字の文字列を取得
def str_right(string,len)
len2=str_len(string)
return joinArray(sliceArray(splitString(string,""), len2-len, len), "")
end
#2つの文字列が同じならtrue,異なるならfalseを返す
def str_equal(string1,string2)
str1=splitString(string1,"")
str2=splitString(string2,"")
len1=getArrayLength(str1)
len2=getArrayLength(str1)
b=(len1==len2)
i=0
while i<len1 && b
b=(str1[i]==str2[i])
i=i+1
end
return b
end
#文字列[string1]の中に文字列[string2]があるか調べ、
#なければ0を返し、あれば一致する最も左のものが何文字目からかを返す
def str_instr(string1,string2)
str1=splitString(string1,"")
str2=splitString(string2,"")
len1 = getArrayLength(str1)
len2 = getArrayLength(str2)
i=0
b=0
while i<len1 && b==0
if str1[i]==str2[0]
if str_equal(str_mid(string1+1,i+1,len2),string2) then b=i+1;end
end
i=i+1
end
return b
end
#文字列[string]の中の文字列[find]を全て文字列[replace]に置き換える
def str_replace(string,find,replace)
result=""
str=splitString(string,"")
len1 = getArrayLength(str)
len2 = str_len(find)
i=0
len3=len1-len2+1
while i < len1
if i>len3
result=result+str[i]
elsif str_equal(str_mid(string,i+1,len2),find)
result=result + replace
i=i+len2
else
result=result + str[i]
i=i+1
end
end
return result
end
#文字列[string]を[number]個つなげた文字列を返す
def str_string(string,number)
str=string
num=number
while num>1
str=str+string
num=num-1
end
return str
end
#文字列[string]が、数字であるか(「"-50.3"」など)どうかを返す
def str_isnumeric(string)
str=splitString(string,"")
len=getArrayLength(str)
b=true
d=0
n=0
if str[0]=="-" then i=1;else i=0;end
while i<len && b
bd=(str[i]==".")
bn=(str[i]=="0"||str[i]=="1"||str[i]=="2"||str[i]=="3"||str[i]=="4"||str[i]=="5"||str[i]=="6"||str[i]=="7"||str[i]=="8"||str[i]=="9")
if bd then d=d+1;end
if bn then n=n+1;end
b = (d<2 && (bd||bn))
i=i+1
end
if n==0 then b=false;end
return b
end
#文字の種類を変換する(引数[conversion]による変換の種類は下のスクリプトを見てください。)
def str_conv(string,conversion)
b=true
if conversion==0#[conversion]==0のとき:アルファベット小文字を大文字に
str1=splitString("abcdefghijklmnopqrstuvwxyz", "")
str2=splitString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
elsif conversion==1#[conversion]==1のとき:アルファベット大文字を小文字に
str1=splitString("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
str2=splitString("abcdefghijklmnopqrstuvwxyz", "")
elsif conversion==2#[conversion]==2のとき:アルファベット半角を全角に
str1=splitString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
str2=splitString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
elsif conversion==3#[conversion]==3のとき:アルファベット全角を半角に
str1=splitString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
str2=splitString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "")
elsif conversion==4#[conversion]==4のとき:ひらがなをカタカナに
str1=splitString("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃゅょっ", "")
str2=splitString("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポャュョッ", "")
elsif conversion==5#[conversion]==5のとき:カタカナをひらがなに
str1=splitString("アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポャュョッ", "")
str2=splitString("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃゅょ"っ, "")
elsif conversion==6#[conversion]==6のとき:ひらがな・カタカナを半角カタカナに
str1=splitString("あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃゅょっアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポャュョッ", "")
str2=splitString(str_string("ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ,サ,シ,ス,セ,ソ,タ,チ,ツ,テ,ト,ナ,ニ,ヌ,ネ,ノ,ハ,ヒ,フ,ヘ,ホ,マ,ミ,ム,メ,モ,ヤ,ユ,ヨ,ラ,リ,ル,レ,ロ,ワ,ヲ,ン,ァ,ィ,ゥ,ェ,ォ,ガ,ギ,グ,ゲ,ゴ,ザ,ジ,ズ,ゼ,ゾ,ダ,ヂ,ヅ,デ,ド,バ,ビ,ブ,ベ,ボ,パ,ピ,プ,ペ,ポ,ャ,ュ,ョ,ッ,",2), ",")
else
b=false
end
if b
t=splitString(string,"")
i=getArrayLength(t)-1
len=getArrayLength(str1)
while i>-1
j=0
while j<len
if t[i]==str1[j] then t[i]=str2[j];end
j=j+1
end
i=i-1
end
end
return joinArray(t,"")
end
#先頭の空白を削除する
def str_LTrim(str)
str2=splitString(str,"")
i=0
n=getArrayLength(str2)
loop=true
while i<n&&loop
if str2[i]!=" "&&str2[i]!=" "
return str_mid(str,i+1,0)
loop=false
elsif i==n-1
return ""
end
i=i+1
end
end
テストスクリプト
t="123456789"
speak(str_mid(t,3,4))#3456と表示
speak(str_mid(t,3,0))#3456789と表示
speak(str_mid2(t,3,6))#3456と表示
speak(str_left(t,3))#123と表示
speak(str_right(t,3))#789と表示
speak("a" + str_string(" ",3)+str_string("b",5))#a bbbbbと表示
speak(str_equal("abc","abc"))#trueと表示
speak(str_equal("abc","ab3"))#falseと表示
speak(str_isnumeric("-20.6"))#trueと表示
speak(str_isnumeric("1.5.6"))#falseと表示
speak(str_isnumeric("-."))#falseと表示
speak(str_instr("122123123","123"))#4と表示
speak(str_replace(t,"23","34"))#134456789
speak(str_replace(t,"89","00"))#123456700
speak(str_conv("Abc",0))#ABCと表示
speak(str_conv("Abc",1))#abcと表示
speak(str_conv("Abc",2))#Abcと表示
speak(str_conv("Abc",3))#Abcと表示
speak(str_conv("あいウエお",4))#アイウエオと表示
speak(str_conv("あいウエお",5))#あいうえおと表示
speak(str_conv("あいウエお",6))#アイウエオと表示
speak(str_LTrim(" a bc d"))#a bc dと表示
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。