สตริงการแยก Android


227

ฉันได้สตริงเรียกและอยู่ในรูปแบบของบางสิ่งบางอย่างเช่นนี้CurrentString ฉันต้องการแยกการใช้เป็นตัวคั่น ดังนั้นวิธีที่คำจะถูกแยกออกเป็นสตริงของตัวเองและจะเป็นสตริงอื่น แล้วฉันก็อยากจะใช้2 ที่แตกต่างกันเพื่อแสดงสตริงที่"Fruit: they taste good"
CurrentString:
"Fruit""they taste good"
SetText()TextViews

อะไรจะเป็นวิธีที่ดีที่สุดในการเข้าถึงสิ่งนี้


คุณอาจลองอ่านในนิพจน์ทั่วไป พวกเขาทำงานได้ดีเช่นกัน
Shouvik

10
@Falmarri - คำถามพิเศษเกี่ยวกับการเขียนโปรแกรมยินดีต้อนรับใน Stack Overflow
Tim Post

คำตอบ:


606
String currentString = "Fruit: they taste good";
String[] separated = currentString.split(":");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

คุณอาจต้องการลบช่องว่างในสตริงที่สอง:

separated[1] = separated[1].trim();

หากคุณต้องการแยกสตริงด้วยอักขระพิเศษเช่น dot (.) คุณควรใช้อักขระ escape \ ก่อนจุด

ตัวอย่าง:

String currentString = "Fruit: they taste good.very nice actually";
String[] separated = currentString.split("\\.");
separated[0]; // this will contain "Fruit: they taste good"
separated[1]; // this will contain "very nice actually"

มีวิธีอื่นที่จะทำ ตัวอย่างเช่นคุณสามารถใช้StringTokenizerคลาส (จากjava.util):

StringTokenizer tokens = new StringTokenizer(currentString, ":");
String first = tokens.nextToken();// this will contain "Fruit"
String second = tokens.nextToken();// this will contain " they taste good"
// in the case above I assumed the string has always that syntax (foo: bar)
// but you may want to check if there are tokens or not using the hasMoreTokens method

ขอบคุณสำหรับสิ่งนี้! ยังมีประโยชน์สำหรับการแยกชั่วโมงและนาทีเมื่อสร้างวัตถุเวลาใหม่
ทำงาน

24
ขอบคุณ! .split () วิธีการใช้งานไม่ได้เลยใน Android! StringTokenizer ทำงานได้ดี
Ayush Pateria

ใช่แล้ว ... คุณมีปัญหาอะไรบ้าง
Cristian

แยกใน android ได้รับการแสดงออกปกติแทนการแบ่งสตริงที่เรียบง่าย
htafoya

1
@HardikParmar การใช้งานetPhoneNo.getText().toString().replaceAll("\\D", "");ของมันกล่าวว่าแทนที่ทั้งหมดซึ่งไม่ได้เป็นหลัก
MilapTank

86

.split วิธีการจะทำงาน แต่จะใช้การแสดงออกปกติ ในตัวอย่างนี้มันจะเป็น (เพื่อขโมยจาก Cristian):

String[] separated = CurrentString.split("\\:");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

นอกจากนี้สิ่งนี้มาจาก: Android แยกไม่ทำงานอย่างถูกต้อง


52

สตริงแยก Android โดยเครื่องหมายจุลภาค

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}

25
     String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News";
     StringTokenizer st = new StringTokenizer(s, "|");
        String community = st.nextToken();
        String helpDesk = st.nextToken(); 
        String localEmbassy = st.nextToken();
        String referenceDesk = st.nextToken();
        String siteNews = st.nextToken();

22

นอกจากนี้คุณยังอาจต้องการพิจารณาเฉพาะ Android TextUtils.split ()วิธีการ

ความแตกต่างระหว่าง TextUtils.split () และ String.split () มีการบันทึกไว้ด้วย TextUtils.split ():

String.split () ส่งคืน [''] เมื่อสตริงที่จะแบ่งว่างเปล่า สิ่งนี้จะคืนค่า [] นี่จะไม่ลบสตริงว่างใด ๆ ออกจากผลลัพธ์

ฉันพบว่านี่เป็นพฤติกรรมที่เป็นธรรมชาติมากกว่า ในสาระสำคัญ TextUtils.split () เป็นเพียงเสื้อคลุมบางสำหรับ String.split () การจัดการโดยเฉพาะกับกรณีที่สตริงที่ว่างเปล่า รหัสสำหรับวิธีการนั้นค่อนข้างง่ายจริงๆ


ประโยชน์ของการใช้ TextUtils.split () แทนที่จะเพียงแค่เรียกแยก () บนสตริงโดยตรงคืออะไร
nibarius

แก้ไขคำตอบเพื่อชี้แจงความแตกต่างระหว่าง TextUtils.split () และ String.split ()
gardarh

ขอบคุณฉันอ่านเอกสารสำหรับ TextUtils.split () จริง ๆ แต่ด้วยเหตุผลบางอย่างที่ฉันพลาดรายละเอียดนี้ ฉันเดาว่าฉันต้องเหนื่อยที่จะเข้าใจสิ่งที่พูดจริง ๆ
nibarius

0

String s = "String ="

String [] str = s.split ("="); // ตอนนี้ str [0] คือ "hello" และ str [1] คือ "goodmorning, 2,1"

เพิ่มสตริงนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.