Based on https://www.oclc.org/batchload/controlnumber.en.html, this ruby function should get the job done:
def oclc_normalize oclc
oclc_num = oclc.gsub(/\D/, '').to_i.to_s
case oclc_num.length
when 1..8
"ocm" + "%08d" % oclc_num
when 9
"ocn" + oclc_num
else
"on" + oclc_num
end
end
examples:
oclc_normalize("(OCoLC)3851870") => ocm03851870
oclc_normalize("123456789") => ocn123456789
oclc_normalize("(OCoLC)1987654041") => on1987654041
oclc_normalize("42") => ocm00000042
I'm actually currently working on stripping out all of the prefixes from the OCLC number to index into Solr. I wanted the number without any leading zeros, and that gets handled by the first line of the function.
|