文字列の分割操作(strtok,split)
一:strtok
C/C++:char *strtok(char s[], const char *delim);
sは分割が必要な文字列を表し、delimは分割のフラグを表し、パラメータはすべて比選です!分割部を指すポインタを返し、分割に成功しなければNULLを返す.
簡単な例です.
以上、1回目以降の分割を見て、またパスを続けるパラメータは
NULLは、strtokが分割したフラグ位置を
/0
分割後の文字列:jscese/0 test/0 strtok
従って、以降の先頭ポインタの位置はいずれも/0であるため、NULLが伝達される.
以上の結果は次のとおりです.
strtok関数はスレッドが安全ではない関数です!文字列の分割を処理するときに、移動位置を保存するポインタ変数が静的変数であるためです.
これにより,同一文字列の処理において複数のstrtokが同時に操作されると,ポインタが錯乱し,想定した分割結果が得られない.
対応するスレッドセキュリティstrtok_r関数.
二:split
java:stringObj.split([separator,[limit]]);
stringObjとは、分割する文字列エンティティを指す.
separator分割フラグ
limitは、返される要素の数を表し、オプションのパラメータです.
文字列の配列を返します.
簡単な例:
以上「.」分割記号ですが、特殊文字にはエスケープが必要です.前に「\」を付ける必要があります.
JAvaイメージ+*|.などはすべて転義を加える必要があります.
以上の実行結果:
jscese
test
split
jscese
test.splilt
書くのは容易ではありません.転載するには出典を明記してください.http://blog.csdn.net/jscese/article/details/26447589
C/C++:char *strtok(char s[], const char *delim);
sは分割が必要な文字列を表し、delimは分割のフラグを表し、パラメータはすべて比選です!分割部を指すポインタを返し、分割に成功しなければNULLを返す.
簡単な例です.
void main()
{
char *str = "jscese test strtok";
char *delim = " ";
char *pstr = NULL;
pstr = strtok(str, delim);
printf("the first str==%s
", pstr);
while ((pstr = strtok(NULL, delim)) != NULL)
{
printf("the next str==%s
", pstr);
}
}
以上、1回目以降の分割を見て、またパスを続けるパラメータは
NULLは、strtokが分割したフラグ位置を
/0
分割後の文字列:jscese/0 test/0 strtok
従って、以降の先頭ポインタの位置はいずれも/0であるため、NULLが伝達される.
以上の結果は次のとおりです.
the first str==jscese
the next str==test
the next str==strtok
strtok関数はスレッドが安全ではない関数です!文字列の分割を処理するときに、移動位置を保存するポインタ変数が静的変数であるためです.
これにより,同一文字列の処理において複数のstrtokが同時に操作されると,ポインタが錯乱し,想定した分割結果が得られない.
対応するスレッドセキュリティstrtok_r関数.
二:split
java:stringObj.split([separator,[limit]]);
stringObjとは、分割する文字列エンティティを指す.
separator分割フラグ
limitは、返される要素の数を表し、オプションのパラメータです.
文字列の配列を返します.
簡単な例:
public void split() {
String testString = "jscese.test.split";
String[] splitarray1 = testString.split("\\.");
for (int i = 0; i < splitarray1.length; i++) {
System.out.println(splitarray1[i]);
}
String[] splitarray2 = testString.split("\\.", 2);
for (int i = 0; i < splitarray2.length; i++) {
System.out.println(splitarray2[i]);
}
}
以上「.」分割記号ですが、特殊文字にはエスケープが必要です.前に「\」を付ける必要があります.
JAvaイメージ+*|.などはすべて転義を加える必要があります.
以上の実行結果:
jscese
test
split
jscese
test.splilt
書くのは容易ではありません.転載するには出典を明記してください.http://blog.csdn.net/jscese/article/details/26447589