⽂字列

⻑さ

AutoLISP関数
(strlen [string]...)
string:文字列
文字列の文字数を示す整数を返します。
戻り値:整数

strlen 関数は、文字列の長さを返します。文字列は複数並べることができ、合計の文字数を返します。

_$ (strlen "water" "resist")⏎
11

日本語は2 バイト文字とし、本当の文字数の2 倍の値が返ります。

_$ (strlen "日本語文字")⏎
10

string 引数が文字列以外の時は、エラーが発生します。

大文字・小文字

AutoLISP関数
(strcase string [which])
string:文字列
which:nil、またはnil 以外
すべてのアルファベットを大文字、または小文字に変換した文字列を返します。
戻り値:文字列

strcase 関数は、文字列を大文字に変換します。which にnil 以外を指定すると、小文字に変換します。

_$ (strcase "Deep GREEN")⏎
"DEEP GREEN"
_$ (strcase "Deep GREEN" T) ⏎
"deep green"

string 引数が文字列以外の時は、エラーが発生します。

結合

AutoLISP関数
(strcat [string...])
string:文字列
複数の文字列を連結した文字列を返します。
戻り値:文字列

strcat 関数は、文字列を連結します。引数がないと、空の文字列を返します。

_$ (strcat "fire" " " "barrier")⏎
"fire barrier"
_$ (strcat) ⏎
""

string 引数が文字列以外の時は、エラーが発生します。

抽出

AutoLISP関数
(substr string start [length])
string:文字列
start,length:整数
文字列の部分文字列を返します。
戻り値:文字列

substr 関数は、文字列の部分文字列を抽出します。start で指定した場所から、length を指定しなければ最後まで、指定してあればその文字数を抽出します。位置の指定は先頭の文字が 1 で、0 から始まっていないので注意してください。

_$ (substr "1234567890" 6)
"67890"
_$ (substr "1234567890" 6 2)
"67"

日本語の文字列も扱えますが、2 バイト文字には正式に対応していません。

_$ (substr "日本語文字列" 7) ⏎
"文字列"
_$ (substr "日本語文字列" 2 6) ⏎
"坙{語・

string 引数が文字列以外の時は、エラーが発生します。

⽂字の検索

AutoLISP関数
(vl-string-position char-code string [start-pos [from-end-p]])
char-code:整数
string:文字列
start-pos:整数
from-end-p: nil、またはnil 以外
ASCII 文字コードで指定される文字を文字列内から検索して、その位置を返します。
戻り値:整数、または nil

vl-string-position 関数は、文字コードに一致する文字を、文字列から検索してその位置を返します。見つからない場合は nil を返します。複数ある場合は、最初に見つかった位置を返します。位置を表す値は、文字列の先頭が 0 です。

_$ (vl-string-position (ascii "5") "0123456789") ⏎
5
_$ (vl-string-position (ascii "A") "0123456789") ⏎
nil

start-pos 引数を指定すると指定した位置から文字列の最後までを範囲として検索されます。

from-end-p 引数を nil 以外にすると、検索文字列の後ろから検索します。

start-pos 引数やfrom-end-p 引数の指定の有無は、返り値の文字列全体で決まるインデックス位置に影響しません。

_$ (vl-string-position (ascii "2") "0123456789") ⏎
2
_$ (vl-string-position (ascii "2") "0123456789" 2) ⏎
2
_$ (vl-string-position (ascii "2") "0123456789" 2 T) ⏎
2

⽂字列の検索

AutoLISP関数
(vl-string-search pattern string [start-pos])
pattern:文字列
string:文字列
start-pos:整数
文字列を検索し、見つかった位置を返します。
戻り値:整数、または nil

vl-string-search 関数は、pattern 文字列を string 文字列内で検索し、見つかった位置を返します。見つからなかった場合は nil を返します。複数ある場合は、最初に見つかった位置を返します。位置を表す値は、文字列の先頭が 0 です。

_$ (vl-string-search "345" "0123456789") ⏎
3
_$ (vl-string-search "375" "0123456789") ⏎
nil

start-pos 引数を指定すると指定した位置から文字列の最後までを範囲として検索されます。

start-pos 引数の指定の有無は、返り値の文字列全体で決まるインデックス位置に影響しません。

_$ (vl-string-search "345" "0123456789" 3) ⏎
3

日本語の文字列も使えます。

_$ (vl-string-search "の" "薔薇の名前") ⏎
4
ACETUTIL関数
(acet-str-find pattern string [ignoreCase [useRegExp]])
pattern:文字列
string:文字列
ignoreCase:nil、またはnil 以外
useRegExp:nil、またはnil 以外
文字列を検索し、見つかった位置を返します。
戻り値:整数、または nil

acet-str-find 関数は、pattern 文字列を string 文字列内で検索し、見つかった位置を返します。見つからなかった場合は nil を返します。複数ある場合は、最初に見つかった位置を返します。位置を表す値は、先頭の文字が 1 で、0 から始まっていないので注意してください。

_$ (acet-str-find "345" "0123456789") ⏎
4
_$ (acet-str-find "375" "0123456789") ⏎
nil

ignoreCase 引数に nil 以外を指定すると、大文字小文字の区別無く文字列を検索します。

_$ (acet-str-find "DEF" "abcdefghij" nil) ⏎
nil
_$ (acet-str-find "DEF" "abcdefghij" T) ⏎
4

useRegExp 引数に nil 以外を指定すると、 pattern 引数に正規表現を使用して検索できます。

_$ (acet-str-find "0.C" "014,002,01C,001,01C,0" nil T) ⏎
9

AutoLISP 上で使える正規表現にはいくつかの種類があります。詳細は後述を参照してください。

置換

AutoLISP関数
(vl-string-subst new-str pattern string [start-pos])
new-str:文字列
pattern:文字列
string:文字列
start-pos:整数
文字列内の特定の部分文字列を他の文字列で置換します。
戻り値:文字列

vl-string-subst 関数は、string から pattern を検索し、見つかった場合は new-str に置き換えます。見つからなかった場合は元の string を返します。複数ある場合は、最初に見つかった位置を置換します。

_$ (vl-string-subst "[ABC]" "abc" "defabcgefgabcdefg")⏎
"def[ABC]gefgabcdefg"

start-pos 引数を指定すると指定した位置から文字列の最後までを範囲として検索されます。

_$ (vl-string-subst "[ABC]" "abc" "defabcgefgabcdefg" 8) ⏎
"defabcgefg[ABC]defg"
ACETUTIL関数
(acet-str-replace pattern new-str string [ignoreCase [useRegExp [count]]])
pattern:文字列
new-str:文字列
string:文字列
ignoreCase:nil、またはnil 以外
useRegExp:nil、またはnil 以外
文字列内の特定の部分文字列を他の文字列で置換します。
戻り値:文字列

acet-str-replace 関数は、string から pattern を検索し、見つかった場合は new-str に置き換えます。見つからなかった場合は元の string を返します。複数ある場合は、すべてを置換します。

_$ (acet-str-replace "abc" "[ABC]" "defabcgefgabcdefg") ⏎
"def[ABC]gefg[ABC]defg"

ignoreCase 引数に nil 以外を指定すると、大文字小文字の区別無く文字列を検索・置換します。

_$ (acet-str-replace "ABC" "[ABC]" "defabcgefgabcdefg" nil) ⏎
"defabcgefgabcdefg"
_$ (acet-str-replace "ABC" "[ABC]" "defabcgefgabcdefg" T) ⏎
"def[ABC]gefg[ABC]defg"

useRegExp 引数に nil 以外を指定すると、pattern 引数に正規表現を使用して検索・置換できます。

_$ (acet-str-replace "0.C" "014" "014,002,01C,001,01C,0" nil T) ⏎
"014,002,014,001,014,0"

AutoLISP 上で使える正規表現にはいくつかの種類があります。詳細は後述を参照してください。

AutoLISP関数
(vl-string-translate source-set dest-set string)
source-set,dest-set:文字列
string:文字列
文字列内の文字を、指定された対応する文字で置換します。
戻り値:文字列

vl-string-translate 関数は、文字列内の文字を、指定された対応する文字で置換します。置換される文字とそれに対応する文字の指定は、例えば A を 1、B を 2 と変換したい場合、 source-set 引数が ”AB” で dest-set 引数が ”12” です。

具体的な使い方は以下のとおりです。

_$ (vl-string-translate "0123456789" "P-SETOR CR" "4507238634") ⏎
"TOP SECRET"

source-set 引数と dest-set 引数の文字列の長さが合わない場合は、短い方にあわされます。