Javascriptとpythonの文字列操作を忘れ過ぎるのでメモ
※このままだとリファレンスとして使いづらいのであとで全体を書き直します
Javascript
Javascript基本事項
数値に文字列を入力した場合
数値に変換できる文字ならその数値扱い
数値に変換できない文字は0扱い(正確にはNaN扱いかも)
例
code:js
console.log( "あいうえお".slice("2") ) //-> "うえお"
console.log( "あいうえお".slice("x") ) //-> "あいうえお"
パラメータにnullを入力した場合
nullは数値としては0、文字列としては空文字として扱う場合が多い(例外あり)
文字列から部分文字列を取り出す
構文:"文字列".slice( <開始位置> , <終了位置>)
開始位置
0が先頭、1が2文字目……(string.length-1)もしくは(-1)が末尾(の手前)
省略すると0扱い=先頭とみなす
両方を省略すると文全体が返る
終了位置
0が先頭、1が2文字目……(string.length-1)もしくは(-1)が末尾の手前
省略すると末尾の終わり扱い
エラー
範囲外を指定すると""(空文字)を返す
開始位置を省略して終了位置を入力しようとするとUnexpected token ','
例
code:js
console.log("あいうえお".slice(0)) //-> "あいうえお"
console.log("あいうえお".slice(0,-1)) //-> "あいうえ"
console.log("あいうえお".slice(-1)) //-> "お"
構文:"文字列".substring( <開始位置> , <終了位置>)
開始位置
0が先頭、1が2文字目……(string.length)が末尾
負の値を入力すると0扱い
省略すると0扱い=先頭とみなす
開始位置のみを省略することはできない。両方を省略すると文全体が返る
終了位置
0が先頭、1が2文字目……(string.length)が末尾
文字列の長さより大きい値を入力すると末尾(string.length)扱い
開始位置より小さい値を入力すると、開始位置と終了位置が逆に扱われる
エラー
範囲外は空文字を返す
例
code:js
const s = "あいうえお"
console.log(s.substring()) //-> "あいうえお"
console.log(s.substring(0,s.length)) //-> "あいうえお"
console.log(s.substring(100)) //-> ""
console.log(s.substring(3,1)) //-> "いう"
substr()
非推奨
文字列から(単一の)文字を取り出す
文字列の任意の位置の1文字を取り出す(負の数も受け付けるバージョン)
構文:"文字列".at( <位置> )
位置
0が先頭の1文字目、1が2文字目……(string.length-1)もしくは(-1)が最後の文字
負の数を入力すると後ろから数える
省略すると0扱い=先頭の文字を返す
例
"あいうえお".at(-1) //-> "お"
エラー
範囲外を指定するとundefinedを返す
文字列の任意の位置の1文字を取り出す(正の数のみ受け付けるバージョン)
構文:"文字列".chatAt( <位置> )
位置
0が先頭の1文字目、1が2文字目……(string.length-1)が最後の文字
負の数の入力は範囲外扱い=空文字を返す
省略すると0扱い=先頭の文字を返す
例
"あいうえお".chatAt(1) //-> "い"
エラー
範囲外を指定すると""(空文字)を返す
文字(列)のキャラクターコードを調べる
文字列の任意の位置の1文字のキャラクターコード(UTF-16)を返す
構文:"文字列".charCodeAt( <位置> )
位置
0が先頭の1文字目、1が2文字目……(string.length-1)が最後の文字
負の数の入力は範囲外扱い=NaNを返す
省略すると0扱い=先頭の文字のコードを返す
エラー
範囲外を指定するとNaNを返す
文字列内に文字列が含まれているか調べる
対象文字列に検索文字(列)が含まれていればtrueを返す
構文:"対象文字列".includes( <検索文字列>, <検索開始位置> )
検索文字列
検索対象の文字列
省略した場合、falseが返る
空文字を入力した場合、trueが返る
nullを入力した場合
通常の文字列にnullは含まれないので通常はfalseが返る
疑問:では、対象文字列がnullだった場合は?
(null).includes("...")は不可能なのでこの時点でエラーが出る
では、str = new String(null)の場合は?
trueが返る!
ちなみに str = new String() の場合は空文字扱いっぽい(nullではない)
検索開始位置
検索開始位置
省略すると0=先頭から検索
負の値は0扱いのようだ
文字列の長さより大きい数値を入力した場合、必ずfalseが返る
文字列内の文字列の位置を調べる
indexOf()
文字列を数値に変換する
構文:parseInt( <対象文字列>, (基数) )
対象文字列の先頭の空白は無視される
エラー
下記の場合は NaN が返されます。
radix が 2 よりも小さいか 36 よりも大きい
対象文字列が数値に変換できない
NaNかどうかを知るにはNumber.isNaN()を使う
if(!result){...}だと変換の結果が0であった場合に処理されてしまうので安全を取るならisNaNのほうが良い
Python
部分文字列
書式: 文字列[<開始位置>:<終了位置>]
開始位置
省略した場合は先頭から
負の値を入れた場合は末尾の直前からの文字数
終了位置
省略した場合は末尾の最後まで
負の値を入れた場合は末尾の直前からの文字数
エラー
範囲外を指定すると IndexError: string index out of range
開始位置>=終了位置の場合は空文字
例
code:python
in
対象文字列の中に検索文字列が含まれていればTrueを返す
書式:検索文字列 in 対象文字列
検索文字列
Noneを指定した場合は TypeError: 'in <string>' requires string as left operand, not NoneType
空文字を指定した場合は常にTrue
対象文字列
Noneを指定した場合は TypeError: argument of type 'NoneType' is not iterable
空文字を指定した場合は
"" in "" のみTrue、その他はFalse
例
code:python