Out of Memory

ごめん、忘れてた。

目次

Blog 利用状況

ニュース

2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

aetos

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

Microsoft MVP for Windows SDK July 2007 - February 2008, Microsoft MVP for Visual C++ February 2008 - June 2009
Microsoft MVP for Windows SDK
July 2007 - February 2008
Microsoft MVP for Visual C++
February 2008 - June 2009

アクセサリ

あわせて読みたい

e-Words

アフィリエイト

記事カテゴリ

書庫

日記カテゴリ

String.LastIndexOfの仕様

さっぱり仕様がわかりません。第2および第3引数の意味を誰か教えてくださいorz

投稿日時 : 2007年9月21日 13:13

Feedback

# re: String.LastIndexOfの仕様 2007/09/21 13:24 とりこびと

これですか?
http://msdn2.microsoft.com/ja-jp/library/ms224421(VS.80).aspx

・・・なんだこれwややこしw

startIndex から count の文字数分前のトコまでが検索範囲?w

# re: String.LastIndexOfの仕様 2007/09/21 13:26 επιστημη

String.LastIndexOf(target, start, count)
start番目からのcount個の文字を検索の対象にすっぞ!
...って意味ちゃうんかなー

# re: String.LastIndexOfの仕様 2007/09/21 13:39 Tom Yama

こうかな?

1. startIndexの位置で比較する
2. 一致したら、終了
3. startIndexとcountとを、1減らす
4. countが0なら、終了
5. 1.に戻る

# re: String.LastIndexOfの仕様 2007/09/21 13:43 επιστημη

public class Program {
  public static void Main() {
  string source = "01234567890123456789";
  char target = '8';
  int start = 10;
  int count = 10;
  int result = source.LastIndexOf(target, start, count);
  System.Console.WriteLine(result);
 }
}

8が返ってまいりました。
start位置からcount個遡りますですねー
んなわけで とりこびっち がせーかい。

# re: String.LastIndexOfの仕様 2007/09/21 13:54 囚人

>8が帰ってまいりました。

なぬっ!?
じゃあ、原文から間違ってるジャン?

# re: String.LastIndexOfの仕様 2007/09/21 14:01 επιστημη

この検索は、startIndex の文字位置から開始し、
value が見つかるか、
count の文字位置に到達するまで、← ここがウソ♪
逆方向に検索を実行します。

The search begins at the startIndex character position
and proceeds backwards until either
value is found or
count character positions have been examined.

原文では"count個の文字位置を調べ尽くすまで"だな。
翻訳のマチガイですねー

# re: String.LastIndexOfの仕様 2007/09/21 14:04 とりこびと

startIndex から検索方向にcountするのか、文字列方向なのか、ですね。

>逆方向に検索を実行します。

コレが混乱するw

# re: String.LastIndexOfの仕様 2007/09/21 14:09 シャノン

あー。
startIndex が指す文字も検索対象になるのかー。

ん…そーすっとアレもまずいな。直しとこう。

# re: String.LastIndexOfの仕様 2007/09/21 14:22 シャノン

まとめ。

●ArgumentOutOfRangeExceptionが出る条件
・startIndex + 1 - count < 0
・startIndex >= string.Length

●このメソッドの挙動
startIndexが指す文字を含め、そこから前にcount文字を検索対象とする。
例:
CABを検索対象とするため見つからない。
"ABCABC".LastIndexOf("ABC", 4, 3 ) -> -1

後ろの ABC が検索対象となる。
"ABCABC".LastIndexOf("ABC", 5, 3 ) -> 3

# re: String.LastIndexOfの仕様 2007/09/21 14:24 囚人

いや、ArgumentOutOfRangeException の Condition
「count plus startIndex specify a position that is not within this instance. 」
が。

つか、今まで完全に間違ってたかも。

startIndex →→→→ startIndex + count
で、count から逆方向に探すと思って…。

# re: String.LastIndexOfの仕様 2007/09/21 14:29 επιστημη

あー、そこか。確かに。
startIndexからcount回'逆方向'に検索すんだから、
「startIndex - count がマイナスになったら例外throw」がせーかいなのかな。

# re: String.LastIndexOfの仕様 2007/09/21 14:35 シャノン

> count plus startIndex specify a position that is not within this instance.

英語の MSDN では、そう書いてあるところは見当たらないけど…
でも、英語の例外ドキュメントもめちゃくちゃ。

http://msdn2.microsoft.com/en-us/library/0w96zd3d.aspx
ArgumentNullExceptionが書いてあるけど、char が null ってあり得るの?

http://msdn2.microsoft.com/en-us/library/1tw91fa3.aspx
startIndex is less than zero or greater than the length of this instance.
実際には startIndex >= length で落ちます。

http://msdn2.microsoft.com/en-us/library/ms131439.aspx
startIndex or count is less than zero or greater than the length of this instance.
もう何言ってんだかわかりません。

別の問題もあるみたい…
http://d.hatena.ne.jp/melt_slinc/20061122

# re: String.LastIndexOfの仕様 2007/09/21 14:41 シャノン

> 「startIndex - count がマイナスになったら例外throw」がせーかいなのかな。

ううん。
startIndex = 5 のとき、文字列の先頭までは 6 文字あるので、count > 6 だと落ちます。
startIndex - count >= -1 までは許容範囲。

# re: String.LastIndexOfの仕様 2007/09/21 14:45 囚人

うっひょ~。混乱してきたぁ!

http://msdn2.microsoft.com/en-us/library/d0z3tk9t(VS.80).aspx

http://msdn2.microsoft.com/en-us/library/d0z3tk9t.aspx

# re: String.LastIndexOfの仕様 2007/09/21 14:49 囚人

衝撃の事実!
URL の末尾が無印なら最新!?

http://msdn2.microsoft.com/ja-jp/library/d0z3tk9t.aspx

# re: String.LastIndexOfの仕様 2007/09/21 14:51 シャノン

うおぉぉぉorz
(VS.80)が英語版も間違えてやがったのか…
そりゃローカライズチームを責めるのは酷ってものか。

# re: String.LastIndexOfの仕様 2007/09/21 15:15 とりこびと

>衝撃の事実!
>URL の末尾が無印なら最新!?

>http://msdn2.microsoft.com/ja-jp/library/d0z3tk9t.aspx

まるで今指摘されて書き直したようなwwww

# re: String.LastIndexOfの仕様 2007/09/21 15:17 επιστημη

なんだかなー

でもでも、
インスタンスの startIndex の文字位置から開始し、value が見つかるか、"count の文字位置に到達するまで"、インスタンスの先頭へ向かって逆方向に検索を実行します。

んとこは依然マチガイよねぇ?
countは'位置'じゃなく'数'だもん。

# re: String.LastIndexOfの仕様 2007/09/21 15:29 シャノン

原文も紛らわしいが、正しくは「count個の文字位置を調べるまで」のようですね。

count character positions have been examined.

# re: String.LastIndexOfの仕様 2007/09/21 15:35 シャノン

というか概要とか引数の説明にはちゃんと書いてある。

> 検索は指定した文字位置から開始され、指定した数の文字位置が検査されます。

> count
> 検査する文字位置の数。

「文字位置の数」ってのがややこしいね。「文字数」でいいじゃないの。

epiさんの意見を反映して投稿しときました。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2170967&SiteID=7

# re: String.LastIndexOfの仕様 2007/09/21 15:45 επιστημη

「文字位置の数」ってのがややこしいね。「文字数」でいいじゃないの。

str.LastIndexOf("ABC",...)
てーときに「文字数」では余計にわけわからんってことでわないかと。

タイトル  
名前  
Url
コメント