7 Stimmen

IndexOf-Methode gibt 0 zurück, wenn sie -1 in C# / Java zurückgeben sollte

Ein Freund von mir kam zu mir mit diesem seltsamen Verhalten, das ich nicht erklären kann, jede Einsicht Ansicht würde geschätzt werden.

Im läuft VS 2005 (C# 2.0), der folgende Code zeigen das Verhalten

int rr = "test".IndexOf("");
Console.WriteLine(rr.ToString());

der obige Code gibt "0" aus, was eindeutig zeigt, dass er -1 hätte zurückgeben müssen

Dies geschieht auch in Java, wo die folgende Klasse das Verhalten zeigt:

public class Test{
 public static void main(String[] args){
   System.out.println("Result->"+("test".indexOf("")));
 }
}

Ich verwende Java 1.6.0_17

2voto

glebm Punkte 18703

Sie sollte 0 zurückgeben. Sie suchen nach dem ersten Vorkommen einer leeren Zeichenkette, richtig? :)

1voto

Jorge Vargas Punkte 6352

Nur so zum Spaß. So funktioniert es auch in Python

>>> "test".startswith("")
True
>>> "test".index("")
0

Python wirft einen ValueError anstelle des -1, das ist schön.

>>> "test".index('r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

1voto

Jorge Vargas Punkte 6352

Mehr Spaß php macht eigentlich einen viel besseren Job!

php -r "print strpos('test','');"
PHP Warning:  strpos(): Empty delimiter. in Command line code on line 1

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X