2011-09-04 57 views
6

Chỉ cần tự hỏi nếu có một tập hợp các mẫu thiết kế cho thao tác chuỗi phức tạp?Mẫu thao tác chuỗi

Về cơ bản các vấn đề tôi đang cố gắng để giải quyết là tôi cần phải có khả năng đọc trong một chuỗi, như sau:

"[name_of_kicker] trông để thực hiện một cú đá giải phóng mặt bằng, nhưng là theo một số thực áp lực từ các cầu thủ [name_of_defending_team]. Anh ấy nhận được một cú sút [length_of_kick], nhưng nó vẫn chạm vào toàn bộ. "

hoặc

"[name_of_kicker] nhận bóng từ [name_of_passer] và ra mắt bom. [Name_of_kicker] đã thực sự làm xúc tốt, nó cung cấp một vài [name_of_attacking_team] chasers thời gian dư dật để dưới bóng khi nó xuống. "

Và thay thế mỗi "tag" bằng giá trị có thể và kiểm tra xem chuỗi có bằng một chuỗi khác hay không. Ví dụ:

Ví dụ: bất kỳ thẻ nào đại diện cho trình phát mà tôi cần để có thể thay thế bằng bất kỳ ai trong số 22 giá trị chuỗi đại diện cho trình phát. Nhưng tôi cũng cần phải có thể chắc chắn rằng tôi đã lặp qua từng kết hợp của người chơi cho các thẻ khác nhau, mà tôi có thể tìm thấy trong một chuỗi. LƯU Ý, các thẻ được liệt kê trong 2 mẫu trên, không phải là các thẻ duy nhất có thể, có vô số các thẻ khác có thể xuất hiện trong bất kỳ câu nào.

Tôi đã cố gắng tạo một tải lồng nhau cho các vòng để đi qua bộ sưu tập của người chơi, vv và cố gắng thay thế các thẻ mỗi lần, nhưng với khả năng có nhiều thẻ, tôi chỉ tạo một lồng nhau cho vòng lặp trong khác, và nó đã trở thành không thể quản lý, và tôi cũng nghi ngờ không hiệu quả, vì tôi cần phải lặp qua hơn 1.000 chuỗi cơ sở giống như các mẫu ở trên, và thay thế các thẻ khác nhau với người chơi, vv cho mỗi ...

Vì vậy, có bất kỳ mẫu thao tác chuỗi nào mà tôi có thể xem xét hoặc bất kỳ ai có bất kỳ giải pháp nào có thể để giải quyết vấn đề như thế này.

Trả lời

1

Thứ nhất, để trả lời câu hỏi của bạn.

Chỉ cần tự hỏi liệu có một tập hợp các mẫu thiết kế cho thao tác chuỗi phức tạp không?

Không thực sự. Có một số kỹ thuật, nhưng chúng hầu như không đủ điều kiện làm mẫu thiết kế . Hai kỹ thuật mà bạn cần lưu ý là mở rộng mẫu và khớp mẫu.

Điều bạn hiện đang làm/đề xuất làm là một dạng mở rộng mẫu. Tuy nhiên, động cơ templating điển hình không hỗ trợ mở rộng tổ hợp mà bạn đang cố gắng làm, và như bạn mong đợi, nó có vẻ là một cách không hiệu quả để giải quyết vấn đề của bạn.

Kỹ thuật tốt hơn có vẻ như phù hợp với mẫu. Hãy lấy ví dụ đầu tiên của bạn và biến nó thành một mẫu:

"(Ronaldino | Maradonna | Peter Shilton | Jackie Charlton) có vẻ như đang thực hiện một cú đá phạt, nhưng dưới áp lực thực sự từ (Everton | Real Các cầu thủ của Adelaide United), anh ấy nhận được một cú đá ([0-9] +), nhưng nó vẫn chạm vào toàn bộ. "

Điều tôi đã làm là chèn tất cả các lựa chọn thay thế có thể vào mẫu giả, để biến nó thành regex. Bây giờ tôi có thể biên dịch regex này thành java.util.Pattern và sử dụng nó để khớp với danh sách các chuỗi khác của bạn.


Có nói rằng, nếu bạn đang cố gắng làm điều này để "phân tích" văn bản, tôi không đánh giá cơ hội thành công của bạn. Tôi nghĩ bạn nên đi xuống tuyến đường NLP.

+0

Tôi ' m sẽ xem xét mô hình phù hợp, như ví dụ của bạn, tôi sẽ cho bạn biết làm thế nào nó đi .. –

+0

Vâng tôi đã đi với mô hình phù hợp bằng cách sử dụng Regex, và nó sẽ tự hỏi cho những gì tôi cần nó để làm, Cảm ơn. –

1

Những gì bạn mô tả trông giống như những gì các công cụ tạo mẫu được sử dụng.

Hai người phổ biến cho Java là:

Nhưng có many, many hơn, dĩ nhiên rồi.

0

MY hai xu, Như bạn nói "Tôi đã chỉ cần tạo ra một lồng vòng lặp for trong vòng khác, và nó đã trở thành không thể quản lý,"

Bạn đang tìm kiếm theo hướng sai người bạn của tôi ở đó là toàn thể vũ trụ của giải pháp cho vấn đề bạn đang gặp phải, chỉ cần biết là động cơ quy tắc . Có nhiều loại công cụ quy tắc khác nhau (công cụ quy tắc nghiệp vụ, công cụ tạo mẫu web, v.v.) nhưng với yêu cầu trên, tôi đề xuất các công cụ quy tắc nghiệp vụ.

Không thể bình luận gì về cái nào để sử dụng vì nó phụ thuộc vào

  1. Multi-Threading.
  2. Nguồn mở/Thương mại.
  3. Thời gian tải yếu tố/chế biến, vv

Hy vọng nó giúp

http://ratakondas.blogspot.in/2012/06/business-rules-engines-white-paper.html [đọc phần tóm tắt nó đưa ra lời khuyên tốt nhất.]

https://en.wikipedia.org/wiki/Business_rules_engine#Types_of_rule_engines https://en.wikipedia.org/wiki/Comparison_of_web_template_engines

Chào mừng đến với thế giới của các công cụ quy tắc :)