2013-03-20 69 views
7

Tôi có một danh sách các mục Sharepoint: mỗi mục có một tiêu đề, một mô tả và một loại. Tôi đã truy xuất thành công nó, tôi gọi nó là result. Tôi muốn kiểm tra xem có bất kỳ mục nào trong số result bắt đầu bằng A rồi B ​​rồi C, v.v. Tôi sẽ phải làm tương tự cho mỗi ký tự bảng chữ cái và sau đó nếu tôi tìm thấy từ bắt đầu bằng ký tự này, tôi sẽ phải hiển thị ký tự in đậm.Cách kiểm tra xem một từ có bắt đầu bằng một ký tự cụ thể không?

tôi ban đầu hiển thị các ký tự sử dụng chức năng này:

private string generateHeaderScripts(char currentChar) 
{ 
    string headerScriptHtml = "$(document).ready(function() {" + 
     "$(\"#myTable" + currentChar.ToString() + "\") " + 
     ".tablesorter({widthFixed: true, widgets: ['zebra']})" + 
     ".tablesorterPager({container: $(\"#pager" + currentChar.ToString() +"\")}); " + 
     "});"; 
    return headerScriptHtml; 
} 

Làm thế nào tôi có thể kiểm tra nếu một từ bắt đầu với một nhân vật nào?

+0

Tôi có thể không hiểu câu hỏi của bạn, nhưng nếu bạn có thể phân tích cú pháp thành chuỗi, bạn có thể sử dụng '.StartsWith' –

Trả lời

13

Để kiểm tra một giá trị, sử dụng:

string word = "Aword"; 
    if (word.StartsWith("A")) 
    { 
     // do something 
    } 

Bạn có thể tạo ra một phương pháp mở rộng chút để vượt qua một danh sách với A, B, và C

public static bool StartsWithAny(this string source, IEnumerable<string> strings) 
    { 
     foreach (var valueToCheck in strings) 
     { 
      if (source.StartsWith(valueToCheck)) 
      { 
       return true; 
      } 
     } 

     return false; 
    } 

    if (word.StartsWithAny(new List<string>() { "A", "B", "C" })) 
    { 
     // do something 
    } 

VÀ như một phần thưởng, nếu bạn muốn biết những gì chuỗi của bạn bắt đầu với, từ một danh sách, và làm điều gì đó dựa trên giá trị đó:

public static bool StartsWithAny(this string source, IEnumerable<string> strings, out string startsWithValue) 
    { 
     startsWithValue = null; 

     foreach (var valueToCheck in strings) 
     { 
      if (source.StartsWith(valueToCheck)) 
      { 
       startsWithValue = valueToCheck; 
       return true; 
      } 
     } 

     return false; 
    } 

Cách sử dụng:

string word = "AWord"; 
    string startsWithValue; 
    if (word.StartsWithAny(new List<string>() { "a", "b", "c" }, out startsWithValue)) 
    { 
     switch (startsWithValue) 
     { 
      case "A": 
       // Do Something 
       break; 

      // etc. 
     } 
    } 
+0

Không quá mức cần thiết để viết một phương pháp mở rộng cho một thứ có thể dễ dàng viết là 'mới [] {'a', 'b', 'c'}. Chứa (s [0]) ' – Magnus

+0

Tôi thích khả năng đọc của" StartsWithAny ", nhưng nó cũng phụ thuộc vào lượng tái sử dụng mong đợi. –

+0

Cảm ơn! Điều này - phương pháp mở rộng với tham số 'out', chính xác là những gì tôi đã nghĩ đến việc viết cho các nhu cầu của mình, đó là kiểm tra phân đoạn tuyến đường đến dựa vào danh sách các phân đoạn url tuyến đường. Làm việc như một say mê! – Shiva

0

Để trở về ký tự đầu tiên trong một chuỗi, sử dụng:

Word.Substring(0,1) //where word is a string 
1

Giả sử các thuộc tính bạn đang kiểm tra nhiều loại chuỗi, bạn có thể sử dụng phương pháp String.StartsWith() .. ví dụ: -

if(item.Title.StartsWith("A")) 
{ 
    //do whatever 
} 

Rửa và lặp lại

0

Bạn có thể thực hiện thường xuyên expr essions. Chúng khá mạnh mẽ, nhưng khi bạn thiết kế biểu thức của bạn, nó sẽ thực sự thực hiện một nhiệm vụ cho bạn.

Ví dụ: tìm số, chữ cái, từ, v.v. nó khá rõ ràng và linh hoạt.

Họ có một hướng dẫn thực sự tuyệt vời trên chúng here:

Một ví dụ về một biểu thức như vậy sẽ là:

string input = "Some additional string to compare against."; 
Match match = Regex.Match(input, @"\ba\w*\b", RegexOptions.IgnoreCase); 

Điều đó sẽ tìm thấy tất cả các mục bắt đầu bằng "a" không có vấn đề trường hợp. Bạn tìm thấy thậm chí sử dụng Lambda và LINQ để làm cho chúng chảy tốt hơn.

Hy vọng điều đó sẽ hữu ích.

0

Hãy thử những điều sau đây. Bạn có thể làm hoặc là StartsWith hoặc Substring 0,1 (chữ cái đầu tiên)

if (Word.Substring(0,1) == "A") { 
    } 
0

Bạn có thể làm điều gì đó như thế này để kiểm tra một ký tự cụ thể.

public bool StartsWith(string value, string currentChar) { 
    return value.StartsWith(currentChar, true, null); 
} 

Phương pháp StartsWith có tùy chọn bỏ qua trường hợp. Tham số thứ ba là đặt văn hóa. Nếu null, nó chỉ sử dụng văn hóa hiện tại. Với phương pháp này, bạn có thể lặp qua các từ của mình, chạy kiểm tra và xử lý từ để đánh dấu ký tự đầu tiên đó nếu cần.

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