Giả sử bạn có chuỗi: "Bò ABC nhảy qua XYZ mặt trăng" và bạn muốn sử dụng jQuery để lấy chuỗi con giữa "ABC" và "XYZ", bạn sẽ làm như thế nào ? Chuỗi con nên là "bò nhảy qua". Cảm ơn nhiều!Sử dụng jQuery để tìm chuỗi con
Trả lời
Điều này không liên quan gì đến jQuery, vốn chủ yếu cho việc lướt qua và thao tác DOM. Bạn muốn có một biểu thức chính quy đơn giản:
var str = "The ABC cow jumped over XYZ the moon";
var sub = str.replace(/^.*ABC(.*)XYZ.*$/m, '$1');
Ý tưởng là bạn đang sử dụng một String.replace với một biểu thức chính quy mà phù hợp với khai mạc và bế mạc của bạn delimiters, và thay thế toàn bộ chuỗi với phần phù hợp giữa các dấu phân cách.
Đối số đầu tiên là cụm từ thông dụng. Đường nhỏ m
làm cho nó khớp với nhiều dòng, có nghĩa là văn bản của bạn giữa ABC
và XYZ
có thể chứa dòng mới. Phần còn lại bị phá vỡ như sau:
^
bắt đầu vào đầu của chuỗi.*
một loạt các 0 hoặc nhiều ký tựABC
delimiter mở của bạn(.*)
trận đấu một loạt từ 0 trở lên ký tựXYZ
dấu phân cách đóng của bạn.*
một chuỗi 0 hoặc nhiều ký tự$
trận đấu đến cuối của chuỗi
Tham số thứ hai, chuỗi thay thế, là '$ 1'. replace
sẽ thay thế trong các bản phụ được lồng tiếng từ thông lệ xuất hiện thường xuyên của bạn - phần (.*)
từ trên cao. Do đó giá trị trả về là toàn bộ chuỗi thay thế bằng các phần giữa các dấu phân cách.
Tôi nghĩ jQuery có chức năng: chuỗi con và indexof, và rằng chúng có thể được sử dụng cùng nhau để lấy chuỗi con. – Steve
Bạn có thể giải thích ngắn gọn cách thức hoạt động này: str.replace (/^.* ABC (. *) XYZ. * $ /, '$ 1'); – Steve
@Steve - JavaScript của nó có các chức năng như chuỗi con và indexof. jQuery giao dịch chủ yếu với DOM của một trang. –
Bạn có thể không cần sử dụng jQuery trên trang này. Tôi sẽ làm một việc như sau:
function between(str, left, right) {
if(!str || !left || !right) return null;
var left_loc = str.indexOf(left);
var right_loc = str.indexOf(right);
if(left_loc == -1 || right_loc == -1) return null;
return str.substring(left_loc + left.length, right_loc);
}
Không đảm bảo mã trên không có lỗi, nhưng ý tưởng là sử dụng chức năng chuẩn substring(). Theo kinh nghiệm của tôi, các loại chức năng này hoạt động giống nhau trên tất cả các trình duyệt.
Chỉ để cho bạn thấy cách bạn sử dụng jQuery và regex của meagar. Hãy nói rằng bạn đã có một trang HTML với P
thẻ sau:
<p id="grabthis">The ABC cow jumped over XYZ the moon</p>
Để lấy chuỗi, bạn sẽ sử dụng sự pha trộn jQuery/JavaScript sau (âm thanh loại ngu ngốc, kể từ jQuery là JavaScript, nhưng thấy jQuery là một thư viện JavaScript DOM):
$(document).ready(function() { // Wait until the document has been fully loaded
var pStr=$("#grabthis").text(); // Grab the text from the P tag and put it into a JS variable
var subStr=pStr.replace(/^.*ABC(.*)XYZ.*$/m, '$1'); // Run the regex to grab the middle string
alert(subStr); // Output the grabbed middle string
});
Hoặc phiên bản ngắn hơn:
$(document).ready(function() {
alert($("#grabthis").text().replace(/^.*ABC(.*)XYZ.*$/m, '$1'));
});
các thay thế chức năng là một hàm JavaScript. Tôi hy vọng điều này sẽ xóa bỏ sự nhầm lẫn.
Meagar, lời giải thích của bạn rất tuyệt, và giải thích rõ ràng ai hoạt động.
Chỉ cần một vài câu hỏi nhỏ:
Có phải() ngoặc cần chỉ như là một cách để chỉ ra một submatch trong tham số thứ hai của hàm relpace hoặc sẽ này cũng xác định submatches:/^. * ABC. XYZ. $/nhưng không hoạt động cho những gì chúng tôi đang cố gắng thực hiện trong trường hợp này?
Có biểu thức chính quy này có 7 submatches:...
^
*
ABC
*
XYZ
*
$
- Liệu $ 1 có nghĩa là sử dụng fi rst cha mẹ submatch? Lúc đầu, tôi nghĩ rằng nó có thể có nghĩa là sử dụng submatch thứ hai trong loạt bài này (lần đầu tiên là $ 0).
Cảm ơn,
Steve
- 1. Sử dụng Java để tìm chuỗi con của một chuỗi lớn hơn sử dụng Regular Expression
- 2. Sử dụng cụm từ thông dụng để tìm/thay thế chuỗi con trong NSString
- 3. Làm cách nào để sử dụng jQuery .each() để tìm con của trẻ?
- 4. Sử dụng Awk để trích xuất chuỗi con
- 5. Sử dụng JS/jQuery để thực hiện tìm kiếm chuỗi/kết hợp mờ?
- 6. Làm thế nào để chuỗi con trong jquery
- 7. Tìm textarea tiếp theo sử dụng Jquery
- 8. tìm vị trí của một chuỗi con trong một chuỗi
- 9. Sử dụng jQuery để tìm một lớp theo tên ID
- 10. Sử dụng jQuery để tìm div theo màu nền
- 11. Tìm con theo chỉ mục jQuery
- 12. cách tìm tên chuỗi sử dụng vba?
- 13. Cách tìm chuỗi con trong SQLite?
- 14. dijit.form.FilteringChọn với tìm kiếm chuỗi con
- 15. python tìm kiếm chuỗi con hiệu quả
- 16. cách tìm trước và sau chuỗi con trong một chuỗi
- 17. Tìm xem chuỗi con có tồn tại trong một chuỗi
- 18. Tìm chuỗi con trong danh sách các chuỗi
- 19. Làm cách nào để cắt chuỗi con khỏi chuỗi ký tự bằng cách sử dụng Javascript?
- 20. Làm thế nào để loại bỏ chuỗi con khỏi chuỗi bằng cách sử dụng PHP?
- 21. Phần tử tìm và xóa khỏi chuỗi/biến bằng cách sử dụng JQuery
- 22. jQuery nếu tìm thấy trong chuỗi
- 23. Xóa chuỗi con bằng cách sử dụng Python
- 24. Làm thế nào để tìm thấy tất cả các chuỗi con của một chuỗi trong PHP
- 25. Cách nhanh nhất để tìm chuỗi bằng chuỗi con trong SQL?
- 26. Tìm kiếm một danh sách sử dụng một chuỗi
- 27. Đường con của chuỗi bằng cách sử dụng Python
- 28. Tìm chuỗi con lặp lại dài nhất trong JavaScript bằng cách sử dụng cụm từ thông dụng
- 29. jQuery: Cách dừng chuỗi AJAX thoát JSON chuỗi được sử dụng để POST dữ liệu
- 30. iPhone CoreText: Tìm tọa độ pixel của một chuỗi con
Trước hết, bạn không sử dụng jQuery để làm chuỗi thao tác - đó là Javascript/ECMAScript. Thứ hai, bạn có thể cụ thể hơn về logic được sử dụng để lấy chuỗi đó không? Có mẫu không? –
Câu hỏi cho jQuery không được gắn thẻ với jQuery –
Vâng anyways tại sao cần jQuery? javascript không thể làm việc đơn giản cho bạn –