Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Re: String parsing (2 questions)

Reply
Thread Tools

Re: String parsing (2 questions)

 
 
Rainer Weikusat
Guest
Posts: n/a
 
      08-28-2012
"Robert Crandal" <> writes:
> My text file contains a list of strings that look similar to this:
>
> ID1 ID2 ID3 Full name ID4
> ----- --- ------------ ---------------- -----
> 6523 222 000000564 Adams Cody J 9999
> 1113 532 000000642 Barnes II Bob R 9999
> 786 123 000000441 Carter Sr James 9999
> 3333 245 000000994 Jones Jr Roy J 9999
> 5644 370 000000234 Martin Tom R 9999
> 2331 333 000000111 Van Horn Tim R 9999
> etc. etc....
>
> Question 1:
> I will be running a while(<>) loop that reads each line
> one at a time. How can I extract just the ID1, ID2,
> and the "full name" into string variables during each
> loop iteration???


Without knowing more about the line format, this can't really be
answered. Untested suggestion:

if (/^([0-9]+)\s+([0-9]+)\s+[0-9]+\+s([A-Za-z].*)\s+[0-9]/) {
$id1 = $1;
$id2 = $2;
$full_name = $3;
} else {
# complain about wrong format?
next;
}

> Question 2: (difficult)
> Suppose we have extracted the "full name" string into
> a variable named $full_name. How can I extract
> the "first name", "middle initial", and "last name plus suffix"?


Split the string on whitespace. Complain if there aren't at least two
elements in the resulting array. Set 'first name' to element #0. If
there are exactly two elements, set last name to element #1. If there
are more than two and the seconds is a capital letter followed by a
dot, assume its a middle initial and use everything behind it as last
name. Otherwise, use everything behind the first name.

Example code for that (parse the first commandline argument):

---------------
@name = split(/\s+/, $ARGV[0]);

die("must have at least two parts") unless @name > 1;

$first = shift(@name);

$middle = shift(@name)
if @name > 1 && $name[0] =~/^[A-Z]\.$/;

print('first ', $first, "\n", 'middle ', $middle, "\n",
'last ', join(' ', @name), "\n");
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
What libraries should I use for MIME parsing, XML parsing, and MySQL ? John Levine Ruby 0 02-02-2012 11:15 PM
[ANN] Parsing Tutorial and YARD 1.0: A C++ Parsing Framework Christopher Diggins C++ 0 07-09-2007 09:01 PM
[ANN] Parsing Tutorial and YARD 1.0: A C++ Parsing Framework Christopher Diggins C++ 0 07-09-2007 08:58 PM
SAX Parsing - Weird results when parsing content between tags. Naren XML 0 05-11-2004 07:25 PM
Perl expression for parsing CSV (ignoring parsing commas when in double quotes) GIMME Perl 2 02-11-2004 05:40 PM



Advertisments