Stdlib 関数 — プログラミング言語 Ring 1.14 取扱説明書

Skip to content

# Stdlib 関数

stdlib.ring 関数の用法です。

この関数の使用前に stdlib.ring ライブラリを読み込みます。

    load "stdlib.ring"

stdlibcore.ring (StdLib 関数) も使えます (クラスはありません)。

これはスタンドアローン型のコンソールアプリケーションを作成する場合に便利です。

stdlib.ring (関数とクラス) は RingLibCurl, RingOpenSSL などのライブラリを読み込みます。

## Puts() 関数

値を表示後に改行 (nl) を表示します。

文法:

    puts(式)

用例:

    Load "stdlib.ring"

    Puts("Hello, World!")

## Print() 関数

文字列の表示 - \n, \t および \r に対応しています。

#{変数名} で変数の値を挿入します。

文法:

    print(文字列) ---> 文字列

用例:

    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")

## Print2Str() 関数

文法:

    print2Str(文字列) ---> 文字列

用例:

    world = "World!"
    mystring = print2str("Hello, #{world} \nIn Year \n#{2000+17} \n")

    see mystring + nl

実行結果:

    Hello, World!
    In Year
    2017

## GetString() 関数

キーボードからの標準入力を取得します。 - 返値は文字列です。

    getstring() ---> 文字列

## GetNumber() 関数

キーボードからの標準入力を取得します。 - 返値は数値です。

    getnumber() ---> 数値

## AppPath() 関数

アプリケーションフォルダのパスを取得します。

文法:

    AppPath() ---> パスの文字列

用例:

    Load "stdlib.ring"

    # アプリケーションのパス
    Puts("Test AppPath()")
    See AppPath() + nl

## JustFilePath() 関数

ファイル名を除去したファイルパスを返します。

文法:

    JustFilePath(cFile) ---> 文字列はパスです。

用例:

    load "stdlib.ring"

    see  justfilePath("c:\ring\applications\rnote\rnote.ring")

実行結果:

    c:\ring\applications\rnote\

## JustFileName() 関数

ファイルパスを除去したファイル名を返します。

文法:

    JustFileName(cFile) ---> 文字列はファイル名です。

用例:

    load "stdlib.ring"

    see justfileName("c:\ring\applications\rnote\rnote.ring")

実行結果:

    rnote.ring

## Value() 関数

リストまたはオブジェクトからコピーを作成します。

文法:

    value(リスト) ---> 新しいリスト

用例:

    Load "stdlib.ring"

    aList = 1:10
    del(value(aList), 1) # 最初のリストを削除
    see aList            # 1 ～ 10 までの数値を表示します。

## Times() 関数

関数を nCount 回実行します。

文法:

    Times(nCount, 関数)

用例:

    Load "stdlib.ring"

    Puts("Test Times()")
    Times ( 3 , func { see "Hello, World!" + nl } )

## Map() 関数

リストの項目ごとに関数を実行します。

文法:

    Map(alist,function) ---> リスト

用例:

    Load "stdlib.ring"

    Puts("Test Map()")
    See Map( 1:10, func x { return x*x } )

## Filter() 関数

項目を篩い分けるために各リストの項目へ関数を実行します。

文法:

    Filter(alist,function) ---> リスト

用例:

    Load "stdlib.ring"

    Puts("Test Filter()")
    See Filter( 1:10 , func x { if x <= 5 return true else return false ok } )

## Split() 関数

文字列の語からリスト項目へ変換します。

文法:

    Split(cstring, 区切り文字) ---> リスト

用例:

    Load "stdlib.ring"

    Puts("Test Split()")
    See Split("one two three four five"," ")

## SplitMany() 関数

文字列の語からリスト項目へ変換します。いろいろな区切り文字を使うことができます。

文法:

    SplitMany(cstring, 文字列またはリスト形式による区切り文字) --> リスト

用例:

    Load "stdlib.ring"

    Puts("Test SplitMany()")
    See SplitMany("one,two,three,four and five"," ,")

## Capitalized() 関数

一文字目を大文字へ変換した文字列のコピーを返します。

文法:

    Capitalized(文字列) ---> 文字列

用例:

    Load "stdlib.ring"

    Puts("Test Capitalized()")
    See capitalized("welcome to the Ring Programming Language")

## IsSpecial() 関数

文字が特殊文字か確認します。

文法:

    IsSpecial(char) ---> True/False

用例:

    Load "stdlib.ring"

    Puts("Test Isspecial()")
    See "Isspecial  = " + isSpecial("%") + nl

## IsVowel() 関数

文字が母音か確認します。

文法:

    IsVowel(char) ---> True/False

用例:

    Load "stdlib.ring"

    Puts("Test Isvowel()")
    See "Isvowel = " + isVowel("c") + nl

## LineCount() 関数

テキストファイルの行数を返します。

文法:

    LineCount(cFileName) ---> 行数

用例:

    Load "stdlib.ring"

    Puts("Test Linecount()")
    See "the number of lines = " + lineCount("test.ring")

## Factorial() 関数

累乗数を返します。

文法:

    Factorial(number) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Factorial()")
    see "6 factorial is : " + Factorial(6)

## Fibonacci() 関数

フィボナッチ数を返します。

文法:

    Fibonacci(number) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Fibonacci()")
    see "6 Fibonacci is : " + Fibonacci(6)

## IsPrime() 関数

数値が素数か返します。

文法:

    isprime(number) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Isprime()")
    if isPrime(16) see "16 is a prime number"
    else see "16 is not a prime number" ok

## Sign() 関数

数値の符号を示した整数の値を返します。

文法:

    Sign(number) ---> 数値 ( -1 = 負数 , 0 , 1 (整数) )

用例:

    Load "stdlib.ring"

    Puts("Test Sign()")
    see "sign of 12 is = " + sign(12) + nl

## List2File() 関数

リスト項目をテキストファイルへ書き出します (項目ごとに改行されます)。

文法:

    List2File(aList, cFileName)

用例:

    Load "stdlib.ring"

    # List2File のテスト
    Puts("Test List2File()")
    list2file(1:100,"myfile.txt")

## File2List() 関数

テキストファイルを読み取って行をリスト項目へ変換します。

文法:

    File2List(cFileName) ---> リスト

用例:

    Load "stdlib.ring"

    # File2List のテスト
    Puts("Test File2List()")
    see len(file2list("myfile.txt"))

## StartsWith() 関数

指定された文字列が指定された部分文字列で始まるならば true を返します。

先頭の空白文字は無視されます。

文法:

    StartsWith(string, substring) ---> True/False

用例:

    Load "stdlib.ring"

    Puts("Test Startswith()")
    see Startswith("CalmoSoft", "Calmo") + nl

## EndsWith() 関数

指定された文字列が指定された部分文字列で終わるならば true を返します。

末尾の空白文字は無視されます。

文法:

    Endswith(string, substring) ---> True/False

用例:

    Load "stdlib.ring"

    Puts("Test Endswith()")
    see endsWith("CalmoSoft", "Soft") + nl

## GCD() 関数

二つの整数における最大公約数 (Greatest Common Divisor) を計算します。

文法:

    Gcd(number,number) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Gcd()")
    see gcd (24, 32) + nl

## LCM() 関数

二つの整数における最小公約数 (Least Common Multiple) を計算します。

文法:

    lcm(number,number) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Lcm()")
    see Lcm(24,36) + nl

## SumList() 関数

整数のリストにおける総和を計算します。

文法:

    sumlist(リスト) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Sumlist()")
    aList = [1,2,3,4,5]
    see Sumlist(aList) + nl

## ProdList() 関数

整数リストの積を計算します。

文法:

    prodlist(リスト) ---> 数値

用例:

    Load "stdlib.ring"

    Puts("Test Prodlist()")
    aList = [1,2,3,4,5]
    see Prodlist(aList) + nl

## EvenOrOdd() 関数

整数が奇数か偶数かテストします。

テストの結果は (1 = 奇数、2 = 偶数) です。

文法:

    evenorodd(number) ---> 1 (奇数) または 2 (偶数)

用例:

    Load "stdlib.ring"

    Puts("Test Evenorodd()")
    nr = 17
    see Evenorodd(nr) + nl

## Factors() 関数

整数の素因数分解を計算をします。

文法:

    factors(number) ---> リスト

用例:

    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

## IsPalindrome() 関数

文字列が回文か確認します。

文法:

    IsPalindrome(String) ---> True/False

用例:

    Load "stdlib.ring"

    Puts("Test IsPalindrome()")
    cString = "radar"
    see IsPalindrome(cString)

注釈

Ring 1.9 以前は Palindrome() 関数として使用可能でした。

## IsLeapYear() 関数

指定された年がグレコリオ暦における閏年か確認します。

文法:

    Isleapyear(number) ---> True/False

用例:

    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

## BinaryDigits() 関数

非負整数値を指定することで二進数配列の計算をします。

文法:

    binarydigits(number) ---> 文字列

用例:

    Load "stdlib.ring"

    Puts("Test Binarydigits()")
    b = 35
    see "Binary digits of " + b + " = " + Binarydigits(b)

## MatrixMulti() 関数

行列同士を掛け合わせます。

文法:

    Matrixmulti(List,List) ---> リスト

用例:

    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)

## MatrixTrans() 関数

サイズ指定による矩形行列の変換を行います。

文法:

    Matrixtrans(リスト) ---> リスト

用例:

    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)

## DayOfWeek() 関数

指定された日付 (西暦四桁-月-日) における曜日を返します。

文法:

    dayofweek(文字列) ---> 文字列

用例:

    Load "stdlib.ring"

    # 指定された日付における曜日を返します。
    Puts("Test Dayofweek()")
    date = "2016-04-24"
    see "Data : " + date + " - Day : " + Dayofweek(date) + nl

## Permutation() 関数

n 個の異なる数値における配列を全て生成します。

文法:

    permutation(リスト)

用例:

    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

## ReadLine() 関数

ファイルから一行読み取ります。

文法:

    readline(fp) ---> 文字列

用例:

    Load "stdlib.ring"

    # ファイルから一行ずつ読み取ります。
    Puts("Test Readline()")
    fp = fopen("test.ring","r")
    while not feof(fp)
    See Readline(fp) end
    fclose(fp)

## SubString() 関数

文字列の指定位置を始点とした部分文字の位置を返します。

文法:

    Substring(str,substr,npos) ---> 文字列

用例:

    Load "stdlib.ring"

    # 文字列の指定位置を始点とした部分文字の位置を返します。
    Puts("Test Substring()")
    a = "abcxyzqweabc"
    b = "abc"
    i = 4
    see substring(a,b,i)

## ChangeString() 関数

部分文字列を指定位置から別の部分文字の指定位置へ変更します。

文法:

    Changestring(cString, nPos1, nPos2, cSubstr) ---> cString

用例:

    Load "stdlib.ring"

    # 部分文字列を指定位置から別の部分文字の指定位置へ変更します。
    Puts("Test Changestring()")
    see Changestring("Rmasdg",2,5,"in")     # Ring

## Sleep() 関数

指定された秒数まで休止します。

文法:

    sleep(nSeconds)

用例:

    Load "stdlib.ring"

    Puts("Test Sleep()")
    see "Wait 3 Seconds!"
    Sleep(3)
    see nl

## IsMainSourceFile() 関数

現在のファイルがメインソースファイルか確認します。

文法:

    IsMainSourceFile() ---> True/False

用例:

    Load "stdlib.ring"

    if ismainsourcefile()
            # コード
    ok

## MakeDir() 関数

ディレクトリを作成します。

文法:

    MakeDir(文字列)

用例:

    Load "stdlib.ring"

    # ディレクトリの作成
    puts("create Directory : myfolder")
    makedir("myfolder")

## Fsize() 関数

ファイルサイズをバイト単位で返します。

文法:

    FSize(ファイルのハンドル) ---> 数値  (バイト単位によるファイルサイズ)

## TrimAll() 関数

文字列から空白とタブ文字を全て除去します。

文法:

    TrimAll(cString) ---> cString # 空白とタブを除去します。

## TrimLeft() 関数

文字列の左側にある空白とタブ文字を全て除去します。

文法:

    TrimLeft(cString) ---> cString # 左側から空白とタブを除去します。

## TrimRight() 関数

文字列の右側にある空白とタブ文字を全て除去します。

文法:

    TrimRight(cString) ---> cString # 右側から空白とタブを除去します。

## EpochTime() 関数

エポック時間を返します。

文法:

    EpochTime(cDate,cTime) ---> エポック時間

用例:

    see EpochTime( Date(), Time() )

## SystemCmd() 関数

SystemCmd() 関数は変数を出力してシステムコマンドを実行します。

文法:

    SystemCmd(cCommand)

用例:

    cYou  = SystemCmd("whoami")        # 記録されたユーザ名は変数へ出力されます。
    cThem = SystemCmd("dir c:\Users")  # ディレクトリのリストは変数へ出力されます。

## ListAllFiles() 関数

ListAllFiles() 関数でフォルダにあるファイルのグループ、およびそのサブフォルダを手軽に処理できます。

文法:

    ListAllFiles(cFolder,cExtension) ---> ファイルのリスト

用例:

    aList = ListAllFiles("c:/ring/ringlibs","ring") # *.ring のみ
    aList = sort(aList)
    see aList

用例:

    see listallfiles("b:/ring/libraries/weblib","") # 全てのファイル

## SystemSilent() 関数

SystemSilent() 関数は実行結果を表示せずにシステムコマンドを実行します。

文法:

    SystemSilent(cCommand)

## OSCreateOpenFolder() 関数

フォルダの作成後に、現在のフォルダを作成したフォルダへ変更します。

文法:

    OSCreateOpenFolder(cCommand)

## OSCopyFolder() 関数

現在のフォルダへフォルダをコピーします。

引数 : 親フォルダ (cParentFolder) のパス、およびコピー先のフォルダ名 (cFolderName)

文法:

    OSCopyFolder(cParentFolder,cFolderName)

用例:

現在のフォルダへ c:\ring\ringlibs\stdlib フォルダをコピーするには

    OSCopyFolder("c:\ring\ringlibs\","stdlib")

## OSDeleteFolder() 関数

現在のディレクトリにあるフォルダを削除します。

文法:

    OSDeleteFolder(cFolderName)

## OSCopyFile() 関数

現在のディレクトリへファイルをコピーします。

文法:

    OSCopyFile(cFileName)

## OSDeleteFile() 関数

ファイルを削除します。

文法:

    OSDeleteFile(cFileName)

## OSRenameFile() 関数

ファイル名を変更します。

文法:

    OSRenameFile(cOldFileName,cNewFileName)

## List2Code() 関数

この関数は Ring リストを実行中に Ring ソースコードへ変換することでソースファイルを保存できるようにします。

リストは文字列、数値または部分リストから構成されます。

用例:

    load "stdlibcore.ring"
    aList = 1:10
    ? list2Code(aList)

実行結果:

    [
            1,2,3,4,5,6,7,8,9,10
    ]

## Str2ASCIIList() 関数

各項目が 1 バイト ASCII コードとなる文字列表現のバイト文字列を数値リストへ変換します。

文法:

    Str2ASCIIList(文字列) ---> 数値リスト

## ASCIIList2Str() 関数

各項目が 1 バイト ASCII コード表現となる数値リストをバイト文字列へ変換します。

文法:

    ASCIIList2Str(数値リスト) ---> 文字列

用例:

    load "stdlibcore.ring"

    cStr = "MmMm"

    aList = Str2ASCIILIST(cStr)
    ? aList

    cStr2 = ASCIIList2Str(aList)
    ? cStr2
    ? len(cStr2)

実行結果:

    77
    109
    77
    109

    MmMm
    4

## IsListContainsItems() 関数

文法:

    IsListContainsItems(aParent,aChild) ----> True/False

用例:

    load "stdlibcore.ring"
    aList1 = "a":"z"
    aList2 = [:h,:l,:p,:u]
    ? IsListContainsItems(aList1,aList2)

## IsBetween() 関数

文法:

    IsBetween(nNumber,nMin,nMax) ----> True/False

用例:

    load "stdlibcore.ring"
    ? isBetween(1,3,4)
    ? isBetween(1,-3,4)
    ? isBetween(4,1,6)
    ? isBetween(4,3,4)

## TimeInfo() 関数

文法:

    TimeInfo(cInformation) ----> 文字列

cInformation の値はこのようになります。

    :hour_24
    :hour_12
    :minutes
    :seconds
    :time
    :day_short
    :day_long
    :month_short
    :month_long
    :date_time
    :day
    :day_year
    :month_year
    :am_pm
    :week_year
    :day_week
    :date
    :year_century
    :year
    :time_zone
    :percent_sign

用例:

    load "stdlibcore.ring"
    ? timeInfo(:date)
    ? timeInfo(:time)
    ? timeInfo(:hour_12)