2013-06-29 40 views
8

Tôi chưa bao giờ sử dụng regex trước đây. Tôi đã từng thấy những câu hỏi tương tự trong diễn đàn nhưng không chính xác những gì tôi đang tìm kiếmNhận giá trị giữa các dấu ngoặc nhọn C#

Tôi có một chuỗi như sau. cần phải nhận được các giá trị giữa dấu ngoặc nhọn

Ex: "{name}{[email protected]}"

và tôi cần để có được những chuỗi tách ra sau.

tên và [email protected]

Tôi đã thử các sau đây và nó mang lại cho tôi trở lại cùng một chuỗi.

string s = "{name}{[email protected]}"; 
string pattern = "({})"; 
string[] result = Regex.Split(s, pattern); 
+0

này là khá một công cụ tốt cho việc tạo mẫu regex/học regex http: // gskinner.com/RegExr/ –

Trả lời

16

Đang sử dụng regex phải? Trong ví dụ cụ thể này, tôi sẽ viết:

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries) 
+0

@FabianBigler Tôi đã ấn tượng rằng regex có thể dễ dàng đạt được điều này, Vì vậy, tôi đã bao gồm Regex trong tiêu đề :). Tôi đã thay đổi tiêu đề ngay bây giờ;) – Kurubaran

+0

Chẳng phải giải pháp được đề xuất cũng sẽ đúng như một chuỗi như 'string s =" }name{[email protected] ";'? – Josep

+0

Tôi đã bỏ phiếu quá nhanh… Giải pháp này không cung cấp câu trả lời. Xem xét chuỗi đầu vào: {name}blabla{[email protected]}, bạn cũng sẽ có “blabla” trong mảng… – Jurion

0

đây bạn đi

string s = "{name}{[email protected]}"; 
s = s.Substring(1, s.Length - 2);// remove first and last characters 
string pattern = "}{";// split pattern "}{" 
string[] result = Regex.Split(s, pattern); 

hoặc

string s = "{name}{[email protected]}"; 
s = s.TrimStart('{'); 
s = s.TrimEnd('}'); 
string pattern = "}{"; 
string[] result = Regex.Split(s, pattern); 
+0

Nó hoạt động, nhưng có cách nào để có được kết quả này chỉ bằng cách sử dụng mẫu Regex mà không sử dụng chuỗi con? – Kurubaran

+0

phương thức trả lời được cập nhật 2 mà không có chuỗi con –

+0

im tự hỏi liệu có bất kỳ thứ gì để nhận rsult chỉ với mẫu regex mà không làm bất kỳ thao tác chuỗi nào khác không? – Kurubaran

23

Sử dụng Matches của Regex hơn Split để thực hiện điều này một cách dễ dàng:

string input = "{name}{[email protected]}"; 
var regex = new Regex("{.*?}"); 
var matches = regex.Matches(input); //your matches: name, [email protected] 
foreach (var match in matches) // e.g. you can loop through your matches like this 
{ 
    //yourmatch 
} 
+0

Up Bỏ phiếu cho câu trả lời này :) – Kurubaran

+0

@Coder Ok chúc mừng! –

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