( C/C++ の場合) #include <string.h> char *strrchr(conts char *str, int c) str : 文字列 c : 探索する文字 ( Java の場合: String クラスのメソッド) int lastIndexOf(int c) int lastIndexOf(int c, int start) c : 探索する文字 start : 探索を開始する場所
#include <stdio.h>
#include <string.h>
int main()
{
long k;
int i;
char *pos;
char *str = "xybaccakmccazabc";
printf("対象とする文字列 %s\n", str);
/*
文字の探索
*/
pos = strchr(str, 'a');
k = (long)pos - (long)str + 1;
printf(" 文字の探索\n");
printf(" 文字 a は最初から %ld 文字目にあります\n", k);
/*
文字の後方からの探索
*/
pos = strrchr(str, 'a');
k = (long)pos - (long)str + 1;
printf(" 文字の後方からの探索\n");
printf(" 文字 a は最初から %ld 文字目にあります\n", k);
/*
文字群の中のどれかの文字の探索
*/
pos = strpbrk(str, "uvwk");
k = (long)pos - (long)str + 1;
printf(" 文字群「uvwk」に含まれる文字の探索\n");
printf(" 文字 %c が最初から %ld 文字目にあります\n", *pos, k);
/*
文字列の探索
*/
pos = strstr(str, "cc");
k = (long)pos - (long)str + 1;
printf(" 文字列の探索\n");
printf(" 文字列 cc は最初から %ld 文字目にあります\n", k);
/*
指定された文字群以外からなる文字列の長さ
*/
i = strcspn(str, "abc");
printf(" 文字群「abc」以外からなる文字列の長さ\n");
printf(" 最初から %d 文字目までに a,b,c の文字は含まれません\n", i);
/*
指定された文字群からなる文字列の長さ
*/
i = strspn(str, "abcxy");
printf(" 文字群「abcxy」からなる文字列の長さ\n");
printf(" 最初から %d 文字目までが a,b,c,x,y でなっています\n", i);
return 0;
}
(出力)
対象とする文字列 xybaccakmccazabc
文字の探索
文字 a は最初から 4 文字目にあります
文字の後方からの探索
文字 a は最初から 14 文字目にあります
文字群「uvwk」に含まれる文字の探索
文字 k が最初から 8 文字目にあります
文字列の探索
文字列 cc は最初から 5 文字目にあります
文字群「abc」以外からなる文字列の長さ
最初から 2 文字目までに a,b,c の文字は含まれません
文字群「abcxy」からなる文字列の長さ
最初から 7 文字目までが a,b,c,x,y でなっています
import java.io.*;
public class Test {
public static void main(String args[]) throws IOException
{
int k;
String str = "xybaccakmccazabc";
System.out.println("対象とする文字列 " + str);
/*
文字の探索
*/
System.out.print(" 文字の探索\n");
k = str.indexOf('a') + 1;
System.out.print(" 文字 a は最初から " + k + " 文字目にあります\n");
k = str.indexOf('a', 4) + 1;
System.out.print(" 文字 a は最初から " + k + " 文字目にあります(開始位置:4)\n");
/*
文字の後方からの探索
*/
System.out.print(" 文字の後方からの探索\n");
k = str.lastIndexOf('a') + 1;
System.out.print(" 文字 a は最初から " + k + " 文字目にあります\n");
k = str.lastIndexOf('a', 4) + 1;
System.out.print(" 文字 a は最初から " + k + " 文字目にあります(開始位置:4)\n");
/*
文字列の探索
*/
System.out.print(" 文字列の探索\n");
k = str.indexOf("cc") + 1;
System.out.print(" 文字列 cc は最初から " + k + " 文字目にあります\n");
k = str.indexOf("cc", 6) + 1;
System.out.print(" 文字列 cc は最初から " + k + " 文字目にあります(開始位置:6)\n");
/*
文字列の後方からの探索
*/
System.out.print(" 文字列の後方からの探索\n");
k = str.lastIndexOf("cc") + 1;
System.out.print(" 文字列 cc は最初から " + k + " 文字目にあります\n");
k = str.lastIndexOf("cc", 6) + 1;
System.out.print(" 文字列 cc は最初から " + k + " 文字目にあります(開始位置:6)\n");
}
}
(出力)
対象とする文字列 xybaccakmccazabc
文字の探索
文字 a は最初から 4 文字目にあります
文字 a は最初から 7 文字目にあります(開始位置:4)
文字の後方からの探索
文字 a は最初から 14 文字目にあります
文字 a は最初から 4 文字目にあります(開始位置:4)
文字列の探索
文字列 cc は最初から 5 文字目にあります
文字列 cc は最初から 10 文字目にあります(開始位置:6)
文字列の後方からの探索
文字列 cc は最初から 10 文字目にあります
文字列 cc は最初から 5 文字目にあります(開始位置:6)
| ホームページ | 目次 | 演習解答例目次 | 付録目次 | 索引 |