cmn-clib(CommonLibraryForC)
C言語共通ライブラリ
 全て データ構造 ファイル 関数 変数 型定義 列挙型 列挙値 マクロ定義
CmnString.c ファイル

文字列操作 共通関数 [詳解]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cmnclib/Common.h"
#include "cmnclib/CmnString.h"
#include "cmnclib/CmnLog.h"

関数

char * CmnString_RTrim (char *str)
 右側トリム [詳解]
 
char * CmnString_LTrim (char *str)
 左側トリム [詳解]
 
char * CmnString_Trim (char *str)
 トリム [詳解]
 
char * CmnString_Replace (const char *src, const char *befor, const char *after, char *dest)
 文字列置換 [詳解]
 
char * CmnString_ReplaceNew (const char *src, const char *befor, const char *after)
 文字列置換(動的メモリ確保) [詳解]
 
char * CmnString_StrCatNew (const char *left, const char *right)
 文字列連結(動的メモリ確保) [詳解]
 
char * CmnString_StrCopyNew (const char *str)
 文字列コピー(動的メモリ確保) [詳解]
 
char * CmnString_StrEol (const char *str, char *delim)
 改行コード(End Of Line:CRLF(
) or LF(
) or CR())を検索する。 [詳解]
 
int CmnString_Split (char *buf, size_t rowlen, size_t collen, const char *str, const char *delim)
 文字列分割(into配列) [詳解]
 
CmnStringListCmnString_SplitAsList (CmnStringList *list, const char *str, const char *delim)
 文字列分割(into CmnDataList) [詳解]
 
CmnStringListCmnString_SplitLine (CmnStringList *list, const char *str)
 文字列を改行コード(CRLF/LF/CRの何れか)で分解してlistに格納する。 [詳解]
 
char * CmnString_Lpad (char *buf, const char *str, char padch, size_t digit)
 文字列の左側パディング [詳解]
 
char * CmnString_Rpad (char *buf, const char *str, char padch, size_t digit)
 文字列の右側パディング [詳解]
 
int CmnString_StartWith (const char *str, const char *mark)
 対象文字列が特定文字列で始まっているかチェックする [詳解]
 
int CmnString_EndWith (const char *str, const char *mark)
 対象文字列が特定文字列で終わっているかチェックする [詳解]
 
int CmnString_IndexOf (const char *str, const char *mark)
 strのなかで最初に出現するmarkの位置(先頭文字をゼロとした文字数)を返す。 [詳解]
 
int CmnString_LastIndexOf (const char *str, const char *mark)
 strのなかで最後に出現するmarkの位置(先頭文字をゼロとした文字数)を返す。 [詳解]
 

詳解

文字列操作 共通関数

文字列操作系共通関数のうち、特に汎用的な関数郡が実装されている。

著者
H.Kumagai
日付
2004-06-05
Revision
1.3

関数詳解

int CmnString_EndWith ( const char *  str,
const char *  mark 
)

対象文字列が特定文字列で終わっているかチェックする

引数
str対象文字列
markチェックする文字列
戻り値
strがmarkで終わっている場合は1を、そうでない場合は0を返す。
int CmnString_IndexOf ( const char *  str,
const char *  mark 
)

strのなかで最初に出現するmarkの位置(先頭文字をゼロとした文字数)を返す。

引数
strベース文字列
mark検索する文字列
戻り値
最初にmarkが出現した位置(先頭文字をゼロとした文字数)を返す。markが出現しなかった場合は-1を返す。
int CmnString_LastIndexOf ( const char *  str,
const char *  mark 
)

strのなかで最後に出現するmarkの位置(先頭文字をゼロとした文字数)を返す。

引数
strベース文字列
mark検索する文字列
戻り値
最後にmarkが出現した位置(先頭文字をゼロとした文字数)を返す。markが出現しなかった場合は-1を返す。
char* CmnString_Lpad ( char *  buf,
const char *  str,
char  padch,
size_t  digit 
)

文字列の左側パディング

引数
bufパディング後の文字列を格納するバッファ
str元文字列
padchパディングする文字
digitパディング後何文字にするか
戻り値
bufを返す
char* CmnString_LTrim ( char *  str)

左側トリム

文字列の左側のスペースを削除する

引数
str(I) トリム処理対象の文字列
戻り値
strへのポインタ
著者
H.Kumagai
覚え書き
この関数は、実際にスペース部分を削除するのではなく、 スペース部分を飛ばしたポインタを生成する。
char* CmnString_Replace ( const char *  src,
const char *  befor,
const char *  after,
char *  dest 
)

文字列置換

srcを読み込み、oldをnewに置換した文字列をdestに格納する。

引数
src(I) 元文字列
befor(I) 置換対象文字列
after(I) 置換後文字列
dest(O) 置換処理後の文字列を格納するバッファ
戻り値
destを返却する。
char* CmnString_ReplaceNew ( const char *  src,
const char *  befor,
const char *  after 
)

文字列置換(動的メモリ確保)

srcを読み込み、oldをnewに置換した文字列を生成する。

引数
src(I) 元文字列
befor(I) 置換対象文字列
after(I) 置換後文字列
戻り値
置換後文字列へのポインタを返却する。呼び出し元でfreeすること。
char* CmnString_Rpad ( char *  buf,
const char *  str,
char  padch,
size_t  digit 
)

文字列の右側パディング

引数
bufパディング後の文字列を格納するバッファ
str元文字列
padchパディングする文字
digitパディング後何文字にするか
戻り値
bufを返す
char* CmnString_RTrim ( char *  str)

右側トリム

文字列の右側のスペースを削除する

引数
str(I/O) トリム処理対象の文字列
戻り値
strへのポインタ
著者
H.Kumagai
int CmnString_Split ( char *  buf,
size_t  rowlen,
size_t  collen,
const char *  str,
const char *  delim 
)

文字列分割(into配列)

strをdelimで分割してbufに格納する。 bufには十分なサイズを確保しておくこと。

引数
buf分割後の文字列を格納する2次元配列。例:最大100文字の文字列を最大10個格納可能とする場合 -> cahr[10][100]
rowlenbufの配列要素数。例の場合は10
collenbuf1要素あたりのの最大文字数。例の場合は100
str分割対象の文字列
delim区切り文字(列)
戻り値
分割した文字列数
CmnStringList* CmnString_SplitAsList ( CmnStringList list,
const char *  str,
const char *  delim 
)

文字列分割(into CmnDataList)

strをdelimで分割してlistに格納する。

引数
list分割後の文字列を格納するリスト。リストの要素はmallocしたchar*となる。 リストのFree時に各要素も合わせてFreeされるため、各要素の個別Freeは不要。
str分割対象の文字列
delim区切り文字(列)
戻り値
listを返す。メモリ確保できなかった場合など異常時はNULLを返す。
CmnStringList* CmnString_SplitLine ( CmnStringList list,
const char *  str 
)

文字列を改行コード(CRLF/LF/CRの何れか)で分解してlistに格納する。

引数
list1行1要素に分解したリスト。空行には""(空文字列)が入る。
str対象文字列
戻り値
listを返す。メモリ確保できなかった場合など異常時はNULLを返す。
int CmnString_StartWith ( const char *  str,
const char *  mark 
)

対象文字列が特定文字列で始まっているかチェックする

引数
str対象文字列
markチェックする文字列
戻り値
strがmarkで始まっている場合は1を、そうでない場合は0を返す。
char* CmnString_StrCatNew ( const char *  left,
const char *  right 
)

文字列連結(動的メモリ確保)

leftとrightを連結した文字列を生成する。

引数
left(I) 左側文字列
right(I) 右側文字列
戻り値
連結後文字列へのポインタを返却する。呼び出し元でfreeすること。
char* CmnString_StrCopyNew ( const char *  str)

文字列コピー(動的メモリ確保)

strをコピーした文字列を生成する。

引数
str(I) 文字列
戻り値
コピーした文字列へのポインタを返却する。呼び出し元でfreeすること。
char* CmnString_StrEol ( const char *  str,
char *  delim 
)

改行コード(End Of Line:CRLF(
) or LF(
) or CR())を検索する。

引数
str検索対象の文字列
delim一番最初に見つかった改行コード(
or
or )を設定する。3bytes以上のバッファとすること。
戻り値
一番最初に見つかった改行コードの位置。改行コードが見つからなかった場合はNULL。
char* CmnString_Trim ( char *  str)

トリム

文字列の両側のスペースを削除する

引数
str(I/O) トリム処理対象の文字列
戻り値
strへのポインタ
著者
H.Kumagai