我有一堆看起来像这样的字符串:
mc_gross = 22.99invoice = ff1ca57d9fa80cf93e6b300dd7f063e1protection_eligibility = Ineligibleaddress_status = confirmedpayer_id = SGA8X3TX9HCVYtax = 0.00address_street = 155第五AVE sepayment_date = 16:08:28 2010年11月15日PSTpayment_status = Completedcharset =窗户-1252address_zip = 98045first_name = jackobmc_fee = 1.08address_country_code = USaddress_name =约翰martinnotify_version = 3.0custom=ff1ca5asdf7d9fa80cf93e6b300dd7f063e1payer_status=unverifiedbusiness=gold-me@hotmail.comaddress_country=United Statesaddress_city =北bendquantity = 1verify_sign = AZussRXZRkuk7frhfirfxxTkj0BDJGA2dJF3eF263eEsjLixS.xRxCzfaYLpayer_email =我@ gmail.comtxn_id = 4DU53818WJ271531Mpayment_type = instantlast_name = Martinaddress_state = WAreceiver_email = cravbill @ hotmail.compayment_fee = 1.08receiver_id = QG8JPB4RZJGG4txn_type = web_acceptitem_name =某些结果项目Specpeciemc_currency = USDitem_number = G10W151residence_country = UShandling_amount = 0.00transaction_subject = ff1ca57d9fad80cf93e6b300dd7f063e1payment_gross = 22.99shipping = 0.00
解析这个的最佳方法是什么?你会认为创造它的人会在其中放置一些中断......
无论如何,任何帮助将不胜感激.
编辑:
我感谢大家的帖子.我想知道我是否可以这样做:
mc_gross=,first_name=,...thestring.replace("first_name","\r\nfirst_name")
我认为这将给我提供我需要进一步解析它的休息时间.你怎么看?
除非这是固定宽度(高度怀疑),否则我会说您将需要获取指示字段的关键字列表。将它们放入数据库(SQL、XML、CSV 等 - 位置并不重要),然后使用它们来解析文件。希望这会以相同的顺序出现,并且不会遗漏任何标签。如果是这样,请执行一个子字符串,查找从标记后的等号末尾到行中下一个标记的开头的值。这将为您提供与适当标签相对应的值。
因此,例如,如果我们只采用第一部分mc_gross=22.99invoice=ff1ca57d9fa80cf93e6b300dd7f063e1protection_eligibility=Ineligibleaddress_status=confirmed,我们的标签将为mc_gross, invoice, protection_eligibility, and address_status We'd then start with mc_gross=,使用 Substring 在字符串中找到它。对于给出的长度,我们会一直找到下一个标签invoice。Substring 行会很复杂,但它应该可以完成工作。循环遍历每个标签。当到达最后一个标签时,您需要找到字符串的末尾而不是另一个标签。
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |