[490] in java-interest
Re: String.indexOf(String,int)
daemon@ATHENA.MIT.EDU (Michael Mills 21728)
Fri Jun 23 21:46:41 1995
From: ekim@nyquist.bellcore.com (Michael Mills 21728)
To: jpayne@starwave.com (Jonathan Payne)
Date: Fri, 23 Jun 1995 20:48:07 -0400 (EDT)
Cc: java-interest@java.sun.com
In-Reply-To: <9506240024.AA19964@flim.starwave.com> from "Jonathan Payne" at Jun 23, 95 05:24:57 pm
> I thought there was something fishy there.
> Your constructor of the String in the first place was wrong!
That was it! All is well now. It even works for 500,000 bytes!!
My humble apologies...
Mike
>
>
> String str = new String(buff,buff.length);
>
> This says, Create me a String out of an array of bytes, and set the hi
> byte of each character to buff.length. This explains why your string
> matches on str.substring(...) worked, since they, too, had the hi byte
> set. The constructor you want is:
>
> public String(byte ascii[], int hibyte, int offset, int count);
>
> > From: ekim@nyquist.bellcore.com (Michael Mills 21728)
> > Date: Fri, 23 Jun 1995 17:31:47 -0400 (EDT)
> > X-Mailer: ELM [version 2.4 PL2]
> > Mime-Version: 1.0
> > Sender: owner-java-interest@java.sun.com
> > Precedence: bulk
> > X-Info: To unsubscribe, send 'unsubscribe' to java-interest-request@java.sun.com
> > Content-Type: text/plain; charset=US-ASCII
> > Content-Length: 2582
> >
> > Hi,
> >
> >
> > I have been playing with the string class and I just can't figure this
> > out. I expected the output to be:
> > TEST!
> > CONVERTED 65535
> > findme
> > findmex
> > THE FIRST = 6000
> > THE FIRST = 6000
> > THE FIRST = 6000
> > THE FIRST = 6000
> > THE FIRST = 6000
> >
> > but got:
> >
> > TEST!
> > CONVERTED 65535
> > findm
> > findme
> > THE FIRST = 6000
> > THE FIRST = -1
> > THE FIRST = -1
> > THE FIRST = 6000
> > THE FIRST = -1
> >
> > 1) Should str.substring(6000,6005) produce a 5 char string or a 6 char string
> > 2) What is wrong with the calls to indexOf that return -1?
> >
> > Here is the program:
> >
> > import java.lang.system;
> > import java.lang.Object;
> > import java.io.InputStream;
> > import net.www.http.HttpClient;
> > import net.www.html.URL;
> > class trySearch {
> > public static void main (String argv [])
> > {
> > System.out.println("TEST!");
> > byte buff[] = new byte[65535];
> >
> > for(int x=0;x<65535;x++)
> > {
> > buff[x] = 'x';
> > }
> >
> > buff[6000] = 'f';
> > buff[6001] = 'i';
> > buff[6002] = 'n';
> > buff[6003] = 'd';
> > buff[6004] = 'm';
> > buff[6005] = 'e';
> >
> > String str = new String(buff,buff.length);
> >
> >
> > System.out.println("CONVERTED "+str.length() );
> > System.out.println(str.substring(6000,6005)) ;
> > System.out.println(str.substring(6000,6006)) ;
> >
> >
> >
> > int first = str.indexOf(str.substring(6000,6005),0);
> > System.out.println("THE FIRST = " + first);
> >
> > first = str.indexOf("find",0);
> > System.out.println("THE FIRST = " + first);
> >
> > String search = new String("find");
> > first = str.indexOf(search,0);
> > System.out.println("THE FIRST = " + first);
> >
> >
> >
> > search = str.substring(6000,6005);
> > first = str.indexOf(search,0);
> > System.out.println("THE FIRST = " + first);
> >
> > byte buff2[] = new byte[5];
> > buff2[0] = 'f';
> > buff2[1] = 'i';
> > buff2[2] = 'n';
> > buff2[3] = 'd';
> > buff2[4] = 'm';
> > search = new String(buff2, buff2.length );
> > first = str.indexOf(search,0);
> > System.out.println("THE FIRST = " + first);
> > System.out.println(search);
> > System.out.println(str.substring(6000,6005) );
> > }
> > }
> >
> >
> > Thanks,
> >
> >
> > Mike
> >
> > -
> > Note to Sun employees: this is an EXTERNAL mailing list!
> > Info: send 'help' to java-interest-request@java.sun.com
> >
>
-
Note to Sun employees: this is an EXTERNAL mailing list!
Info: send 'help' to java-interest-request@java.sun.com