2011-06-28 36 views
6

Làm thế nào để tìm kiếm một văn bản cụ thể bên trong một phần tử mảng chuỗi? Sau đây là ví dụ về tệp xml. Tên chuỗi-chuỗi là android. Tôi có một số mục bên trong mảng chuỗi. Bây giờ tôi muốn tìm kiếm từ "phần mềm". Vui lòng cho tôi biết cách thực hiện điều đó?Tìm kiếm một chuỗi trong thành phần mục String-Array

<?xml version="1.0" encoding="utf-8"?><resources> 
<string-array name="android"> 
    <item>Android is a software stack for mobile devices that includes an operating system, middleware and key applications.</item> 
    <item>Google Inc. purchased the initial developer of the software, Android Inc., in 2005..</item> 
</string-array> 

Trả lời

18

Tôi giả định rằng bạn muốn làm điều này trong mã. Không có gì trong api để làm khớp văn bản trên toàn bộ mảng String; bạn cần phải làm điều đó một yếu tố tại một thời điểm:

String[] androidStrings = getResources().getStringArray(R.array.android); 
for (String s : androidStrings) { 
    int i = s.indexOf("software"); 
    if (i >= 0) { 
     // found a match to "software" at offset i 
    } 
} 

Tất nhiên, bạn có thể sử dụng một Matcher và Pattern, hoặc bạn có thể lặp qua mảng với một chỉ số nếu bạn muốn biết vị trí trong mảng que diêm. Nhưng đây là cách tiếp cận chung.

19

Phương pháp này có hiệu quả tốt hơn:

String[] androidStrings = getResources().getStringArray(R.array.android); 
if (Arrays.asList(androidStrings).contains("software") { 
    // found a match to "software"   
} 

Arrays.asList().contains() là nhanh hơn so với sử dụng một vòng lặp for.

+11

Điều này sẽ không làm những gì OP muốn, mà (dựa trên các ví dụ được đăng) là để tìm các yếu tố của danh sách _contain_ từ "phần mềm". Điều này sẽ chỉ tìm các phần tử _equal_ (toàn bộ) với từ "phần mềm". Ngoài ra, 'List.contains' sử dụng một vòng lặp nội bộ; nó không nhanh hơn việc sử dụng một vòng lặp trong mã của riêng bạn. Ngoài ra, bạn có thêm chi phí tạo một trình bao bọc 'List' xung quanh' Chuỗi [] '. –

+0

nó sẽ hoạt động cho một danh sách đối tượng tùy chỉnh? – ralphgabb

Các vấn đề liên quan