Re: substring() not working?
Mark Space wrote:
Peter Parker wrote:
Also, what's the best way to extract fields from a string (or from a
file) like this? java/VB Script? PERL? Thanks.String sample = "<a
href="http://email.people.yahoo.com/py/psEmailVcard.vcf?Pyt=Tps&srch=email&
snipped String firstName =
sample.substring(sample.indexOf("FirstName=") +10,
sample.indexOf("&LastName"));
Hmm, that's a good question. I assumed the answer would be "use
java.net.URL" but there's no way to parse the query string. You can use
getQuery() to get the whole thing, which seems a bit safer than your
method.
You can look at this code. It has a trace option at the top. I set it to
true. It will do what you want but I am not happy with it. I think I can
clean it up and make it tighter. Anyway, here ya go:
public class Parsetest
{
static boolean trace = true;
public static void main(String[] args)
{
String sample = "<a href="
+
"http://email.people.yahoo.com/py/psEmailVcard.vcf?Pyt=Tps&srch=email&ext=vcard.vcf&FirstName=George&LastName=Bush&FullName=George+Bush&City=Washington&State=DC&Country=US&CountryCode=US&Email=gbush@whitehouse.com&URL="
+ ">vCard</a>";
String firstName = "", lastName = "", fullName = "";
String city = "", state = "", country = "", countryCode = "",
email = "";
sample = sample.replace("&", "");
sample = sample.replace("=", " ");
String[] token = sample.split(";");
int i = 0;
for (i = 0; i < token.length; i++){
if (trace)
System.out.println("Queued (length, value) " +
token[i].length() + " "+ token[i]);
if (token[i].length()> 3 &
token[i].substring(0, 4).equals("City")){
city = token[i].substring(4).trim();
} else if (token[i].length()> 4 &
token[i].substring(0, 5).equals("Email")){
email = token[i].substring(5).trim();
} else if (token[i].length()> 4 &
token[i].substring(0, 5).equals("State")){
state = token[i].substring(5).trim();
} else if (token[i].length()> 6 &
token[i].substring(0, 7).equals("Country")){
country = token[i].substring(7).trim();
} else if (token[i].length()> 7 &
token[i].substring(0, 8).equals("LastName")){
lastName = token[i].substring(8).trim();
} else if (token[i].length()>7 &
token[i].substring(0, 8).equals("FullName")){
fullName = token[i].substring(8).trim();
fullName = fullName.replace("+", " ");
} else if (token[i].length()> 8 &
token[i].substring(0, 9).equals("FirstName")){
firstName = token[i].substring(9).trim();
} else if (token[i].length() > 9 &
(token[i].substring(0, 10).equals("CountryCode"))) {
countryCode = token[i].substring(11).trim();
} else
if (trace)
System.out.println("Not Used: " + token[i]);
}
// test
System.out.println("firstName: " + firstName);
System.out.println("lastName: " + lastName);
System.out.println("fullName: " + fullName);
System.out.println("city: " + city);
System.out.println("state: " + state);
System.out.println("country: " + country);
System.out.println("Country Code: " + state);
System.out.println("Email: " + email);
}
}
--
Thanks in Advance...
IchBin, Pocono Lake, Pa, USA http://weconsultants.phpnet.us
'If there is one, Knowledge is the "Fountain of Youth"'
-William E. Taylor, Regular Guy (1952-)