ฉันต้องเลือกส่วนเฉพาะของสตริงที่มีขนาดใหญ่มาก (ซึ่งกำลังถอดรหัสจากโค้ด QR) เพื่อตั้งเป็นข้อความในองค์ประกอบ TextView ใน Android
//*these are the parts of the string whose corresponding values I need as a text for my TextViews.*
String uid, name, gname, gender, house, street, ps, po, dist, subdist, state, pin, address, dob;
//*this 'string' object holds the decoded qr string*
String string = "uid="001" name="Akbar Shah" gender="M" yob="1989" gname="Jahangir Shah" co="S/O: Jahangir Shah" house="45/5" street="Huzurey Ala Street" vtc="Alibagh" po="Bagnan" dist="Faridabad" subdist="Alamgarh" state="Andhra" pc="6754674" dob="15/04/89"";
//*this is where I am using substring() to get a specific part of the string value*
uid = string.substring(string.indexOf("uid=")+5, string.indexOf("name=")-2);
name = string.substring(string.indexOf("name=")+6, string.indexOf("gender=")-2);
gname = string.substring(string.indexOf("gname=")+7, string.indexOf("co=")-2);
gender = string.substring(string.indexOf("gender=")+8, string.indexOf("yob=")-2);
house = string.substring(string.indexOf("house=")+7, string.indexOf("street=")-2);
street = string.substring(string.indexOf("street=")+8, string.indexOf("vtc=")-2);
ps = string.substring(string.indexOf("vtc=")+5, string.indexOf("po=")-2);
po = string.substring(string.indexOf("po=")+4, string.indexOf("dist=")-2);
dist = string.substring(string.indexOf("dist=")+6, string.indexOf("subdist=")-2);
subdist = string.substring(string.indexOf("subdist=")+9, string.indexOf("state=")-2);
state = string.substring(string.indexOf("state=")+7, string.indexOf("pc=")-2);
pin = string.substring(string.indexOf("pc=")+4, string.indexOf("dob=")-2);
dob = string.substring(string.indexOf("dob=")+5, string.indexOf("/>")-1);
//*this is where I have concatenated the whole address parts into one*
address = house+", "+street+", \nPS - "+ps+", \nPO - "+po+", \nDistrict - "+dist+", \nSub-Division - "+subdist+", \nState - "+state+", \nPin Code - "+pin;
TextView tv_uid, tv_name, tv_gName, tv_gender, tv_address, tv_dob;
//*this is where I then setText those substrings for appropriate TextViews*
tv_uid.setText(uid);
tv_name.setText(name);
tv_gName.setText(gname);
tv_gender.setText(gender);
tv_address.setText(address);
tv_dob.setText(dob);
วิธีที่ฉันดำเนินการนี้จะใช้ได้ก็ต่อเมื่อรูปแบบสตริง QR ที่ถอดรหัสแล้วยังคงเหมือนเดิม กล่าวคือ หากสตริงที่ถอดรหัสแล้วตอนนี้จะเป็นดังนี้:
สตริง string = "uid="001" name="Akbar Shah" sex="M" yob="1989" gname="Jahangir Shah" co="S/O: Jahangir Shah" house="45/5" street= "Huzurey Ala Street" vtc="Alibagh" po="Bagnan" dist="Faridabad" subdist="Alamgarh" state="Andhra" pc="6754674" dob="15/04/89"";
จากนั้น วิธีการแยกข้อมูลของฉันจะไม่ทำงานหากสตริงมีลักษณะดังนี้:
String string = "uid="002" name="Amar Tripathi" sex="M" yob="1990" vtc="Alibagh" po="Bagnan" dist="Faridabad" state="Andhra" pc="6754674" วันที่ = "15/04/89"";
หรือเช่นนี้:
String string = "uid="003" name="Anthony Gonzalis" sex="M" yob="1985" gname="Jahangir Shah" house="45/5" street="Huzurey Ala Street" lm="ด้านหลัง ร้านขายเนื้อ" loc="Galianwalabagh" vtc="Alibagh" dist="Faridabad" state="Andhra" pc="6754674" dob="15/04/89"";
ดังที่คุณอาจสังเกตเห็นแล้วว่า substring() ไม่สามารถใช้สากลได้ในทุกกรณี เนื่องจากค่าสตริงสองค่าสุดท้ายมีบางส่วนหายไป ดังนั้นหากฉันระบุให้แยกสตริงย่อยเฉพาะซึ่งคั่นระหว่าง gname และ co ยกเว้นในกรณีแรก ในสองกรณีสุดท้าย จะไม่สามารถค้นหา co ได้ และด้วยเหตุนี้การดำเนินการของข้อผิดพลาดในการส่งคืนบรรทัดโค้ด มีวิธีที่ดีกว่าในการทำหรือไม่?
ป.ล. ฉันสามารถแยกส่วนสตริงทั้งหมดออกจากด้านใน " " ได้หรือไม่
เช่น. "001" เป็นส่วนหนึ่งของสตริงที่ฉันแค่ต้องการได้ส่วน 001 ซึ่งอยู่ในเครื่องหมายคำพูดคู่