.. index:: single: Stdlib 関数; はじめに =========== Stdlib 関数 =========== stdlib.ring 関数の用法を学びます。 この関数の使用前に stdlib.ring ライブラリを読み込みます。 .. code-block:: ring load "stdlib.ring" stdlibcore.ring (StdLib 関数) も使えます (クラスはありません)。 stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込むため、スタンドアローン型のコンソールアプリケーションの作成時は好都合です。 .. index:: pair: Stdlib 関数; puts() Puts() 関数 =========== 値を表示後に改行 (nl) を表示します。 文法: .. code-block:: ring puts(式) 用例: .. code-block:: ring Load "stdlib.ring" Puts("Hello, World!") .. index:: pair: Stdlib 関数; print() Print() 関数 ============ 文字列の表示 - \\n, \\t および \\r に対応しています。 #{変数名} で変数の値を挿入します。 文法: .. code-block:: ring print(文字列) ---> 文字列 用例: .. code-block:: ring print("\nHello, World\n\nHow are you? \t\t I'm fine!\n") x=10 y=20 print("\nx value = #{x} , y value = #{y} \n") .. index:: pair: Stdlib 関数; Print2Str() 関数 Print2Str() 関数 ================ 文法: .. code-block:: ring print2Str(文字列) ---> 文字列 用例: .. code-block:: ring world = "World!" mystring = print2str("Hello, #{world} \nIn Year \n#{2000+17} \n") see mystring + nl 実行結果: .. code-block:: ring Hello, World! In Year 2017 .. index:: pair: Stdlib 関数; getstring() GetString() 関数 ================ キーボードからの標準入力を取得します。 - 返値は文字列です。 .. code-block:: ring getstring() ---> 文字列 .. index:: pair: Stdlib 関数; getnumber() GetNumber() 関数 ================ キーボードからの標準入力を取得します。 - 返値は数値です。 .. code-block:: ring getnumber() ---> 数値 .. index:: pair: Stdlib 関数; apppath() AppPath() 関数 ============== アプリケーションフォルダのパスを取得します。 文法: .. code-block:: ring AppPath() ---> パスの文字列 用例: .. code-block:: ring Load "stdlib.ring" # アプリケーションのパス Puts("Test AppPath()") See AppPath() + nl .. index:: pair: Stdlib 関数; JustFilePath() JustFilePath() 関数 =================== ファイル名を除去したファイルパスを返します。 文法: .. code-block:: ring JustFilePath(cFile) ---> 文字列はパスです。 用例: .. code-block:: ring load "stdlib.ring" see justfilePath("b:\ring\applications\rnote\rnote.ring") 実行結果: .. code-block:: ring b:\ring\applications\rnote\ .. index:: pair: Stdlib 関数; JustFileName() JustFileName() 関数 =================== ファイルパスを除去したファイル名を返します。 文法: .. code-block:: ring JustFileName(cFile) ---> 文字列はファイル名です。 用例: .. code-block:: ring load "stdlib.ring" see justfileName("b:\ring\applications\rnote\rnote.ring") 実行結果: .. code-block:: ring rnote.ring .. index:: pair: Stdlib 関数; value() Value() 関数 ============ リストまたはオブジェクトからコピーを作成します。 文法: .. code-block:: ring value(リスト) ---> 新しいリスト 用例: .. code-block:: ring Load "stdlib.ring" aList = 1:10 del(value(aList), 1) # 最初のリストを削除 see aList # 1 ~ 10 までの数値を表示します。 .. index:: pair: Stdlib 関数; times() Times() 関数 ============ 関数を nCount 回実行します。 文法: .. code-block:: ring Times(nCount, 関数) 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Times()") Times ( 3 , func { see "Hello, World!" + nl } ) .. index:: pair: Stdlib 関数; map() Map() 関数 ========== リストの項目ごとに関数を実行します。 文法: .. code-block:: ring Map(alist,function) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Map()") See Map( 1:10, func x { return x*x } ) .. index:: pair: Stdlib 関数; filter() Filter() 関数 ============= 項目を篩い分けるために各リストの項目へ関数を実行します。 文法: .. code-block:: ring Filter(alist,function) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Filter()") See Filter( 1:10 , func x { if x <= 5 return true else return false ok } ) .. index:: pair: Stdlib 関数; split() Split() 関数 ============ 文字列の語からリスト項目へ変換します。 文法: .. code-block:: ring Split(cstring, 区切り文字) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Split()") See Split("one two three four five"," ") .. index:: pair: Stdlib 関数; splitmany() SplitMany() 関数 ================ 文字列の語からリスト項目へ変換します。いろいろな区切り文字を使うことができます。 文法: .. code-block:: ring SplitMany(cstring, 文字列またはリスト形式による区切り文字) --> リスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test SplitMany()") See SplitMany("one,two,three,four and five"," ,") .. index:: pair: Stdlib 関数; newlist() NewList() 関数 ============== 二次元リストの作成 文法: .. code-block:: ring NewList(nRows, nColumns) ---> 新しいリスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Newlist()") a1 = 3 a2 = 5 chrArray = newlist(a1,a2) numArray = newlist(a1,a2) chrArray[1][1] = "Hello" numArray[1][1] = 987.2 See chrArray[1][1] + nl See numArray[1][1] + nl .. index:: pair: Stdlib 関数; capitalized() Capitalized() 関数 ================== 一文字目を大文字へ変換した文字列のコピーを返します。 文法: .. code-block:: ring Capitalized(文字列) ---> 文字列 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Capitalized()") See capitalized("welcome to the Ring Programming Language") .. index:: pair: Stdlib 関数; isspecial() IsSpecial() 関数 ================ 文字が特殊文字であるかどうかを確認します。 文法: .. code-block:: ring IsSpecial(char) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Isspecial()") See "Isspecial = " + isSpecial("%") + nl .. index:: pair: Stdlib 関数; isvowel() IsVowel() 関数 ============== 文字が母音であるかどうかを確認します。 文法: .. code-block:: ring IsVowel(char) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Isvowel()") See "Isvowel = " + isVowel("c") + nl .. index:: pair: Stdlib 関数; linecount() LineCount() 関数 ================ テキストファイルの行数を返します。 文法: .. code-block:: ring LineCount(cFileName) ---> 行数 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Linecount()") See "the number of lines = " + lineCount("test.ring") .. index:: pair: Stdlib 関数; factorial() Factorial() 関数 ================ 累乗数を返します。 文法: .. code-block:: ring Factorial(number) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Factorial()") see "6 factorial is : " + Factorial(6) .. index:: pair: Stdlib 関数; fibonacci() Fibonacci() 関数 ================ フィボナッチ数を返します。 文法: .. code-block:: ring Fibonacci(number) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Fibonacci()") see "6 Fibonacci is : " + Fibonacci(6) .. index:: pair: Stdlib 関数; isprime() IsPrime() 関数 ============== 数値が素数であるかどうかを返します。 文法: .. code-block:: ring isprime(number) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Isprime()") if isPrime(16) see "16 is a prime number" else see "16 is not a prime number" ok .. index:: pair: Stdlib 関数; sign() Sign() 関数 =========== 数値の符号を示した整数の値を返します。 文法: .. code-block:: ring Sign(number) ---> 数値 ( -1 = 負数 , 0 , 1 (整数) ) 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Sign()") see "sign of 12 is = " + sign(12) + nl .. index:: pair: Stdlib 関数; list2file() List2File() 関数 ================ リスト項目をテキストファイルへ書き出します (項目ごとに改行されます)。 文法: .. code-block:: ring List2File(aList, cFileName) 用例: .. code-block:: ring Load "stdlib.ring" # List2File のテスト Puts("Test List2File()") list2file(1:100,"myfile.txt") .. index:: pair: Stdlib 関数; file2list() File2List() 関数 ================ テキストファイルを読み取って行をリスト項目へ変換します。 文法: .. code-block:: ring File2List(cFileName) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" # File2List のテスト Puts("Test File2List()") see len(file2list("myfile.txt")) .. index:: pair: Stdlib 関数; startswith() StartsWith() 関数 ================= 指定された文字列が指定された部分文字列で始まるならば true を返します。 先頭の空白文字は無視されます。 文法: .. code-block:: ring StartsWith(string, substring) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Startswith()") see Startswith("CalmoSoft", "Calmo") + nl .. index:: pair: Stdlib 関数; endswith() EndsWith() 関数 =============== 指定された文字列が指定された部分文字列で終わるならば true を返します。 末尾の空白文字は無視されます。 文法: .. code-block:: ring Endswith(string, substring) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Endswith()") see endsWith("CalmoSoft", "Soft") + nl .. index:: pair: Stdlib 関数; gcd() GCD() 関数 ========== 整数の最大公約数 (Greatest Common Divisor) を計算します。 文法: .. code-block:: ring Gcd(number,number) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Gcd()") see gcd (24, 32) + nl .. index:: pair: Stdlib 関数; lcm() LCM() 関数 ========== 整数の最小公約数 (Least Common Multiple) を計算します。 文法: .. code-block:: ring lcm(number,number) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Lcm()") see Lcm(24,36) + nl .. index:: pair: Stdlib 関数; sumlist() SumList() 関数 ============== 整数のリストにおける総和を計算します。 文法: .. code-block:: ring sumlist(リスト) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Sumlist()") aList = [1,2,3,4,5] see Sumlist(aList) + nl .. index:: pair: Stdlib 関数; prodlist() ProdList() 関数 =============== 整数リストの積を計算します。 文法: .. code-block:: ring prodlist(リスト) ---> 数値 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Prodlist()") aList = [1,2,3,4,5] see Prodlist(aList) + nl .. index:: pair: Stdlib 関数; evenorodd() EvenOrOdd() 関数 ================ 整数が奇数か偶数かどうかテストします。 テストの結果は (1 = 奇数、2 = 偶数) です。 文法: .. code-block:: ring evenorodd(number) ---> 1 (奇数) または 2 (偶数) 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Evenorodd()") nr = 17 see Evenorodd(nr) + nl .. index:: pair: Stdlib 関数; factors() Factors() 関数 ============== 整数の素因数分解を計算をします。 文法: .. code-block:: ring factors(number) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Factors()") n = 45 aList = factors(n) see "Factors of " + n + " = " for i = 1 to len(aList) see "" + aList[i] + " " next .. index:: pair: Stdlib 関数; ispalindrome() IsPalindrome() 関数 =================== 文字列が回文であるかどうか確認します。 文法: .. code-block:: ring IsPalindrome(String) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test IsPalindrome()") cString = "radar" see IsPalindrome(cString) .. note:: Ring 1.9 以前は Palindrome() 関数として使用可能でした。 .. index:: pair: Stdlib 関数; isleapyear() IsLeapYear() 関数 ================= 指定された年がグレコリオ暦における閏年であるかどうか確認します。 文法: .. code-block:: ring Isleapyear(number) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Isleapyear()") year = 2016 if Isleapyear(year) see "" + year + " is a leap year." else see "" + year + " is not a leap year." ok .. index:: pair: Stdlib 関数; binarydigits() BinaryDigits() 関数 ======================= 非負整数値を指定することで二進数配列の計算をします。 文法: .. code-block:: ring binarydigits(number) ---> 文字列 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Binarydigits()") b = 35 see "Binary digits of " + b + " = " + Binarydigits(b) .. index:: pair: Stdlib 関数; matrixmulti() MatrixMulti() 関数 ====================== 行列を掛け合わせます。 文法: .. code-block:: ring Matrixmulti(List,List) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" # 行列を掛け合わせます。 Puts("Test Matrixmulti()") A = [[1,2,3], [4,5,6], [7,8,9]] B = [[1,0,0], [0,1,0], [0,0,1]] see Matrixmulti(A, B) .. index:: pair: Stdlib 関数; matrixtrans() MatrixTrans() 関数 ====================== サイズ指定による矩形行列の変換を行います。 文法: .. code-block:: ring Matrixtrans(リスト) ---> リスト 用例: .. code-block:: ring Load "stdlib.ring" # サイズ指定による矩形行列の変換を行います。 Puts("Test Matrixtrans()") matrix = [[78,19,30,12,36], [49,10,65,42,50], [30,93,24,78,10], [39,68,27,64,29]] see Matrixtrans(matrix) .. index:: pair: Stdlib 関数; dayofweek() DayOfWeek() 関数 ==================== 指定された日付 (西暦四桁-月-日) における曜日を返します。 文法: .. code-block:: ring dayofweek(文字列) ---> 文字列 用例: .. code-block:: ring Load "stdlib.ring" # 指定された日付における曜日を返します。 Puts("Test Dayofweek()") date = "2016-04-24" see "Data : " + date + " - Day : " + Dayofweek(date) + nl .. index:: pair: Stdlib 関数; permutation() Permutation() 関数 ================== n 個の異なる数値における配列を全て生成します。 文法: .. code-block:: ring permutation(リスト) 用例: .. code-block:: ring Load "stdlib.ring" # n 個の異なる数値における配列を全て生成します。 Puts("Test Permutation()") list = [1, 2, 3, 4] for perm = 1 to 24 for i = 1 to len(list) see list[i] + " " next see nl Permutation(list) next .. index:: pair: Stdlib 関数; readline() ReadLine() 関数 =============== ファイルから一行読み取ります。 文法: .. code-block:: ring readline(fp) ---> 文字列 用例: .. code-block:: ring Load "stdlib.ring" # ファイルから一行ずつ読み取ります。 Puts("Test Readline()") fp = fopen("test.ring","r") while not feof(fp) See Readline(fp) end fclose(fp) .. index:: pair: Stdlib 関数; substring() SubString() 関数 ================ 文字列の指定位置を始点とした部分文字の位置を返します。 文法: .. code-block:: ring Substring(str,substr,npos) ---> 文字列 用例: .. code-block:: ring Load "stdlib.ring" # 文字列の指定位置を始点とした部分文字の位置を返します。 Puts("Test Substring()") a = "abcxyzqweabc" b = "abc" i = 4 see substring(a,b,i) .. index:: pair: Stdlib 関数; changestring() ChangeString() 関数 =================== 部分文字列を指定位置から別の部分文字の指定位置へ変更します。 文法: .. code-block:: ring Changestring(cString, nPos1, nPos2, cSubstr) ---> cString 用例: .. code-block:: ring Load "stdlib.ring" # 部分文字列を指定位置から別の部分文字の指定位置へ変更します。 Puts("Test Changestring()") see Changestring("Rmasdg",2,5,"in") # Ring .. index:: pair: Stdlib 関数; sleep() Sleep() 関数 ============ 指定された秒数まで休止します。 文法: .. code-block:: ring sleep(nSeconds) 用例: .. code-block:: ring Load "stdlib.ring" Puts("Test Sleep()") see "Wait 3 Seconds!" Sleep(3) see nl .. index:: pair: Stdlib 関数; ismainsourcefile() IsMainSourceFile() 関数 ======================= 現在のファイルがメインソースファイルであるかどうか確認します。 文法: .. code-block:: ring IsMainSourceFile() ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" if ismainsourcefile() # コード ok .. index:: pair: Stdlib 関数; direxists() DirExists() 関数 ================ ディレクトリが存在するかどうか確認します。 文法: .. code-block:: ring DirExists(文字列) ---> True/False 用例: .. code-block:: ring Load "stdlib.ring" see "Check dir : b:\ring " puts( DirExists("b:\ring") ) see "Check dir : C:\ring " Puts( DirExists("C:\ring") ) .. index:: pair: Stdlib 関数; makedir() MakeDir() 関数 ============== ディレクトリを作成します。 文法: .. code-block:: ring MakeDir(文字列) 用例: .. code-block:: ring Load "stdlib.ring" # ディレクトリの作成 puts("create Directory : myfolder") makedir("myfolder") .. index:: pair: Stdlib 関数; FSize() Fsize() 関数 ============ ファイルサイズをバイト単位で返します。 文法: .. code-block:: ring FSize(ファイルのハンドル) ---> 数値 (バイト単位によるファイルサイズ) .. index:: pair: Stdlib 関数; TrimAll() TrimAll() 関数 ============== 文字列から空白とタブ文字を全て除去します。 文法: .. code-block:: ring TrimAll(cString) ---> cString # 空白とタブを除去します。 .. index:: pair: Stdlib 関数; TrimLeft() TrimLeft() 関数 =============== 文字列の左側にある空白とタブ文字を全て除去します。 文法: .. code-block:: ring TrimLeft(cString) ---> cString # 左側から空白とタブを除去します。 .. index:: pair: Stdlib 関数; TrimRight() TrimRight() 関数 ================ 文字列の右側にある空白とタブ文字を全て除去します。 文法: .. code-block:: ring TrimRight(cString) ---> cString # 右側から空白とタブを除去します。 .. index:: pair: Stdlib 関数; EpochTime() EpochTime() 関数 ================ エポック時間を返します。 文法: .. code-block:: ring EpochTime(cDate,cTime) ---> エポック時間 用例: .. code-block:: ring see EpochTime( Date(), Time() ) .. index:: pair: Stdlib 関数; SystemCmd() 関数 SystemCmd() 関数 ================ SystemCmd() 関数は変数を出力してシステムコマンドを実行します。 文法: .. code-block:: ring SystemCmd(cCommand) 用例: .. code-block:: ring cYou = SystemCmd("whoami") # 記録されたユーザ名は変数へ出力されます。 cThem = SystemCmd("dir c:\Users") # ディレクトリのリストは変数へ出力されます。 .. index:: pair: Stdlib 関数; ListAllFiles() 関数 ListAllFiles() 関数 =================== ListAllFiles() 関数でフォルダにあるファイルのグループ、およびそのサブフォルダを手軽に処理できます。 文法: .. code-block:: ring ListAllFiles(cFolder,cExtension) ---> ファイルのリスト 用例: .. code-block:: ring aList = ListAllFiles("c:/ring/ringlibs","ring") # *.ring のみ aList = sort(aList) see aList 用例: .. code-block:: ring see listallfiles("b:/ring/ringlibs/weblib","") # 全てのファイル .. index:: pair: Stdlib 関数; SystemSilent() 関数 SystemSilent() 関数 =================== SystemSilent() 関数は実行結果を表示せずにシステムコマンドを実行します。 文法: .. code-block:: ring SystemSilent(cCommand) .. index:: pair: Stdlib 関数; OSCreateOpenFolder() 関数 OSCreateOpenFolder() 関数 ========================= フォルダの作成後に、現在のフォルダを作成したフォルダへ変更します。 文法: .. code-block:: ring OSCreateOpenFolder(cCommand) .. index:: pair: Stdlib 関数; OSCopyFolder() 関数 OSCopyFolder() 関数 =================== 現在のフォルダへフォルダをコピーします。 引数 : 親フォルダ (cParentFolder) のパス、およびコピー先のフォルダ名 (cFolderName) 文法: .. code-block:: ring OSCopyFolder(cParentFolder,cFolderName) 用例: 現在のフォルダへ b:\\ring\\ringlibs\\stdlib フォルダをコピーするには .. code-block:: ring OSCopyFolder("b:\ring\ringlibs\","stdlib") .. index:: pair: Stdlib 関数; OSDeleteFolder() 関数 OSDeleteFolder() 関数 ===================== 現在のディレクトリにあるフォルダを削除します。 文法: .. code-block:: ring OSDeleteFolder(cFolderName) .. index:: pair: Stdlib 関数; OSCopyFile() 関数 OSCopyFile() 関数 ================= 現在のディレクトリへファイルをコピーします。 文法: .. code-block:: ring OSCopyFile(cFileName) .. index:: pair: Stdlib 関数; OSDeleteFile() 関数 OSDeleteFile() 関数 =================== ファイルを削除します。 文法: .. code-block:: ring OSDeleteFile(cFileName) .. index:: pair: Stdlib 関数; OSRenameFile() 関数 OSRenameFile() 関数 =================== ファイル名を変更します。 文法: .. code-block:: ring OSRenameFile(cOldFileName,cNewFileName) .. index:: pair: Stdlib 関数; List2Code() 関数 List2Code() 関数 ================ この関数は Ring リストを実行中に Ring ソースコードへ変換することでソースファイルを保存できるようにします。 リストは文字列、数値または部分リストを有しています。 用例: .. code-block:: ring load "stdlibcore.ring" aList = 1:10 ? list2Code(aList) 実行結果: .. code-block:: ring [ 1,2,3,4,5,6,7,8,9,10 ] .. index:: pair: Stdlib 関数; Str2ASCIIList() 関数 Str2ASCIIList() 関数 ==================== 各項目が1バイト ASCII コードとなる文字列表現のバイト文字列を数値リストへ変換します。 文法: .. code-block:: ring Str2ASCIIList(文字列) ---> 数値リスト .. index:: pair: Stdlib 関数; ASCIIList2Str() 関数 ASCIIList2Str() 関数 ==================== 各項目が1バイト ASCII コード表現となる数値リストをバイト文字列へ変換します。 文法: .. code-block:: ring ASCIIList2Str(数値リスト) ---> 文字列 用例: .. code-block:: ring load "stdlibcore.ring" cStr = "MmMm" aList = Str2ASCIILIST(cStr) ? aList cStr2 = ASCIIList2Str(aList) ? cStr2 ? len(cStr2) 実行結果: .. code-block:: none 77 109 77 109 MmMm 4 .. index:: pair: Stdlib 関数; IsListContainsItems() 関数 IsListContainsItems() 関数 ========================== 文法: .. code-block:: ring IsListContainsItems(aParent,aChild) ----> True/False 用例: .. code-block:: ring load "stdlibcore.ring" aList1 = "a":"z" aList2 = [:h,:l,:p,:u] ? IsListContainsItems(aList1,aList2) .. index:: pair: Stdlib 関数; IsBetween() 関数 IsBetween() 関数 ================ 文法: .. code-block:: ring IsBetween(nNumber,nMin,nMax) ----> True/False 用例: .. code-block:: ring load "stdlibcore.ring" ? isBetween(1,3,4) ? isBetween(1,-3,4) ? isBetween(4,1,6) ? isBetween(4,3,4) .. index:: pair: Stdlib 関数; TimeInfo() 関数 TimeInfo() 関数 =============== 文法: .. code-block:: ring TimeInfo(cInformation) ----> 文字列 cInformation の値はこのようになります。 .. code-block:: ring :time :hour_24 :hour_12 :minutes :seconds :date :day_long :day_short :month :year 用例: .. code-block:: ring load "stdlibcore.ring" ? timeInfo(:date) ? timeInfo(:time) ? timeInfo(:hour_12)