Làm cách nào để xóa các thẻ HTML khỏi Datatable trong C#?

@Karlos

Đã dán dữ liệu HTML mẫu của bạn vào PQ bằng cách sử dụng tùy chọn ENTER DATA table, bạn có thể nhập từ tệp HTML của mình dưới dạng nguồn Web.
Dữ liệu trông như thế này

Làm cách nào để xóa các thẻ HTML khỏi Datatable trong C#?


Đã thêm cột tùy chỉnh với mã sau

=Html.Table([Column1], {{"ExtractedText",":root"}})


Sau đó Mở rộng Cột Mới, bạn chỉ nhận được văn bản

Làm cách nào để xóa các thẻ HTML khỏi Datatable trong C#?


Nếu bạn muốn kết hợp tất cả các dòng trên thành một CELL, hãy thêm dòng sau

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")

Làm cách nào để xóa các thẻ HTML khỏi Datatable trong C#?

________________________

Tôi đã trả lời câu hỏi của bạn chưa nhỉ?

Nhấp vào biểu tượng Thumbs-Up ở bên phải nếu bạn thích câu trả lời này 🙂

YouTube, LinkedIn

Gói R DT cung cấp giao diện R cho thư viện JavaScript DataTables. Các đối tượng dữ liệu R (ma trận hoặc khung dữ liệu) có thể được hiển thị dưới dạng bảng trên trang HTML và DataTables cung cấp tính năng lọc, phân trang, sắp xếp và nhiều tính năng khác trong bảng

Bạn có thể cài đặt phiên bản ổn định từ CRAN hoặc phiên bản phát triển bằng cách sử dụng

DT::datatable(head(iris), editable = 'cell')
7 nếu cần (trang web này phản ánh phiên bản phát triển của DT)

Nếu bạn đã quen thuộc với DataTables, bạn có thể sử dụng đối số

DT::datatable(head(iris), editable = 'cell')
8 để tùy chỉnh bảng. Xem trang Tùy chọn để biết chi tiết. Ở đây chúng tôi giải thích phần còn lại của các đối số của hàm
DT::datatable(head(iris), editable = 'cell')
9

Đối số

DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
0 chỉ định các lớp CSS của bảng. Có thể tìm thấy các giá trị có thể có trên trang tùy chọn kiểu dáng mặc định. Giá trị mặc định
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
1 về cơ bản cho phép phân chia hàng, tô sáng hàng khi di chuột qua, viền hàng và tô sáng các cột được sắp xếp. Bạn có thể chọn một tổ hợp lớp CSS khác, chẳng hạn như
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
2 và
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
3

datatable(head(iris), class = 'cell-border stripe')

Hiện tại, DT chỉ hỗ trợ kiểu Bootstrap bên cạnh kiểu mặc định. Bạn có thể sử dụng đối số

DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
4 để bật kiểu Bootstrap và điều chỉnh các lớp bảng cho phù hợp bằng cách sử dụng tên lớp bảng Bootstrap, chẳng hạn như
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
5 và
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
6. Trên thực tế, DT sẽ tự động điều chỉnh tên lớp ngay cả khi bạn đã cung cấp tên lớp DataTables chẳng hạn như
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
3 và
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
8

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
5

Lưu ý rằng bạn chỉ có thể sử dụng một kiểu cho tất cả các bảng trên một trang. Vui lòng xem trang riêng này để biết các ví dụ sử dụng kiểu Bootstrap

Bạn có thể kích hoạt tính năng chỉnh sửa bảng bằng cách sử dụng đối số

DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))
9 (xem
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
70 để biết các giá trị có thể có của nó). Sau đó, bạn sẽ có thể bấm đúp vào một ô để chỉnh sửa giá trị của nó. Nó hoạt động ở cả chế độ xử lý phía máy khách và phía máy chủ. Dưới đây là hai ví dụ phía máy khách (cũng xem ví dụ Sáng bóng với quá trình xử lý phía máy chủ)

DT::datatable(head(iris), editable = 'cell')
DT::datatable(head(iris), editable = list(
  target = 'row', disable = list(columns = c(1, 3, 4))
))

Nếu đối tượng dữ liệu có tên hàng, chúng sẽ được hiển thị ở cột đầu tiên của bảng theo mặc định. Bạn có thể chặn tên hàng thông qua đối số

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
71 và bạn cũng có thể thay đổi tên hàng bằng cách cung cấp một vectơ ký tự khác cho
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
72

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
7____23
DT::datatable(head(iris), editable = 'cell')
4

Ảnh hưởng của tên hàng đối với chỉ số cột trong JavaScript

Tên hàng thực chất là một cột mới được thêm vào dữ liệu gốc (thông qua _______ 173). Điều này có một hệ quả quan trọng về các chỉ số cột. JavaScript lập chỉ mục từ 0 thay vì 1, vì vậy chỉ mục của phần tử thứ n thực sự là n - 1. Khi nghĩ đến các chỉ số cột (mà bạn sẽ thường phải làm nếu bạn tùy chỉnh các tùy chọn), hãy sử dụng

  • n - 1 làm chỉ mục của cột thứ n trong dữ liệu gốc nếu bạn không hiển thị tên hàng;
  • n làm chỉ mục của cột thứ n trong dữ liệu gốc nếu bạn muốn hiển thị tên hàng, vì chỉ mục gốc là n - 1 trong JavaScript nhưng chúng tôi đã thêm tên hàng làm cột đầu tiên và (n - 1) +

Điều rất quan trọng cần ghi nhớ điều này khi sử dụng các tùy chọn DataTables

Theo mặc định,

DT::datatable(head(iris), editable = 'cell')
9 hiển thị tên cột của dữ liệu trong bảng và bạn có thể sử dụng vectơ ký tự tùy chỉnh cho tiêu đề bảng. Có một vài khả năng. Đầu tiên là bạn cung cấp một vectơ ký tự mới để thay thế hoàn toàn tên cột của dữ liệu, e. g

DT::datatable(head(iris), editable = 'cell')
7

Điều này có thể rườm rà nếu bạn chỉ muốn thay thế một hoặc hai tên và bạn không muốn cung cấp toàn bộ vectơ tên. Sau đó, đây là khả năng thứ hai. bạn có thể cung cấp một vectơ số hoặc ký tự ngắn hơn làm vectơ chỉ mục để thay thế một tập hợp con tên cột. Ví dụ: nếu bạn chỉ muốn tên thứ 2 là

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
75, bạn có thể sử dụng
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
76;

DT::datatable(head(iris), editable = 'cell')
3____34

Khi bạn hiển thị tên hàng của dữ liệu, tên cột của nó sẽ là khoảng trắng theo mặc định. Đó là lý do tại sao bạn không thể nhìn thấy tên cột của nó. Bạn chắc chắn cũng có thể chọn sử dụng tên cột cho tên hàng, e. g

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
50

Đối số

DT::datatable(head(iris), editable = 'cell')
30 cho phép bạn cung cấp một vùng chứa bảng khác để chứa các ô của bảng. Theo mặc định, vùng chứa được tạo từ tên cột. Dưới đây là một ví dụ về tiêu đề bảng tùy chỉnh

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
51
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
52
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
53

Bạn cũng có thể thêm chân trang vào vùng chứa bảng và đây là một ví dụ

________ 154 ________ 155 ________ 156

Bạn có thể thêm chú thích bảng thông qua đối số

DT::datatable(head(iris), editable = 'cell')
31. Nó có thể là một vectơ ký tự hoặc một đối tượng thẻ được tạo từ
DT::datatable(head(iris), editable = 'cell')
32. Xem bài đăng trên blog này để biết thêm thông tin về chú thích bảng

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
57
=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
58

DataTables không cung cấp bộ lọc cột theo mặc định. Chỉ có một bộ lọc chung (hộp tìm kiếm ở trên cùng bên phải). Chúng tôi đã thêm một đối số

DT::datatable(head(iris), editable = 'cell')
33 trong
DT::datatable(head(iris), editable = 'cell')
9 để tự động tạo các bộ lọc cột. Theo mặc định, các bộ lọc không được hiển thị kể từ
DT::datatable(head(iris), editable = 'cell')
35. Bạn có thể bật các bộ lọc này bằng cách
DT::datatable(head(iris), editable = 'cell')
36 hoặc
DT::datatable(head(iris), editable = 'cell')
37, tùy thuộc vào việc bạn muốn đặt các bộ lọc ở đầu hay cuối bảng

=Text.Combine(#"Expanded Custom"[ExtractedText],"#(lf)")
59

Tùy thuộc vào loại cột, điều khiển bộ lọc có thể khác nhau. Ban đầu, bạn thấy hộp tìm kiếm cho tất cả các cột. Khi bạn nhấp vào hộp tìm kiếm, bạn có thể thấy các điều khiển khác nhau

  • Đối với các cột số/ngày/giờ, thanh trượt phạm vi được sử dụng để lọc các hàng trong phạm vi;
  • Đối với các cột yếu tố, đầu vào chọn được sử dụng để hiển thị tất cả các danh mục có thể và bạn có thể chọn nhiều danh mục ở đó (lưu ý rằng bạn cũng có thể nhập vào hộp để tìm kiếm trong tất cả các danh mục);
  • Đối với các cột ký tự, các hộp tìm kiếm thông thường được sử dụng để khớp với các giá trị bạn đã nhập vào các hộp;

Khi bạn rời khỏi các hộp tìm kiếm ban đầu, các điều khiển sẽ bị ẩn và các giá trị lọc (nếu có) được lưu trữ trong các hộp

  • Đối với các cột số/ngày/giờ, các giá trị được hiển thị trong các hộp có dạng
    DT::datatable(head(iris), editable = 'cell')
    38;
  • Đối với các cột hệ số, các giá trị được sắp xếp theo thứ tự thành một mảng JSON có dạng
    DT::datatable(head(iris), editable = 'cell')
    39;

Khi một cột được lọc, sẽ có một nút xóa trong hộp tìm kiếm của cột đó và bạn có thể nhấp vào nút đó để xóa bộ lọc. Nếu bạn không muốn sử dụng các điều khiển, bạn thực sự có thể gõ trực tiếp vào các ô tìm kiếm, e. g. bạn có thể nhập

DT::datatable(head(iris), editable = 'cell')
40 để lọc một cột số và phạm vi thanh trượt của nó sẽ tự động điều chỉnh thành
DT::datatable(head(iris), editable = 'cell')
41. Trong trường hợp bạn thấy hộp tìm kiếm quá hẹp và khó đọc các giá trị trong đó, bạn có thể di chuột qua hộp đó và các giá trị của nó sẽ được hiển thị dưới dạng chú giải công cụ. Xem ví dụ này để biết cách ẩn các nút rõ ràng và sử dụng các kiểu nhập văn bản thuần túy thay vì Bootstrap

Dưới đây là một ví dụ đơn giản để minh họa các bộ lọc cho các cột ký tự, ngày tháng và thời gian

DT::datatable(head(iris), editable = 'cell')
0

Quá trình lọc trong các ví dụ trên được thực hiện ở phía máy khách (sử dụng JavaScript trong trình duyệt web của bạn). Bộ lọc cột cũng hoạt động ở chế độ xử lý phía máy chủ, trong trường hợp đó, quá trình lọc sẽ được xử lý trên máy chủ và có thể có một số khác biệt nhỏ (e. g. Biểu thức chính quy JavaScript khác với R). Xem tại đây để biết ví dụ về bộ lọc cột hoạt động ở phía máy chủ

Các vấn đề đã biết của bộ lọc cột

Vị trí của bộ lọc cột có thể bị tắt khi tính năng cuộn được bật trong bảng, e. g. thông qua các tùy chọn

DT::datatable(head(iris), editable = 'cell')
42 và/hoặc
DT::datatable(head(iris), editable = 'cell')
43. Giao diện có thể bị ảnh hưởng bởi Thanh trượt sáng bóng, như đã báo cáo trong #49

Đối số

DT::datatable(head(iris), editable = 'cell')
44 lấy phần thân của hàm JavaScript sẽ được áp dụng cho đối tượng DataTables sau khi khởi tạo. Dưới đây là một ví dụ để hiển thị trang tiếp theo sau khi bảng được khởi tạo

DT::datatable(head(iris), editable = 'cell')
1

Trong ví dụ trên, hàm gọi lại thực tế ở phía JavaScript là cái này (

DT::datatable(head(iris), editable = 'cell')
44 chỉ là phần thân của hàm)

DT::datatable(head(iris), editable = 'cell')
2

Sau khi chúng tôi khởi tạo bảng thông qua phương thức

DT::datatable(head(iris), editable = 'cell')
46 trong DataTables, phiên bản DataTables được chuyển đến hàm gọi lại này. Dưới đây là một vài ví dụ khác

Xin lưu ý rằng đối số

DT::datatable(head(iris), editable = 'cell')
44 này chỉ là một đối số của hàm
DT::datatable(head(iris), editable = 'cell')
9 và đừng nhầm lẫn nó với các lệnh gọi lại trong tùy chọn DataTables. Mục đích của đối số này là cho phép người dùng thao tác với đối tượng DataTables sau khi tạo

Đối số

DT::datatable(head(iris), editable = 'cell')
49 xác định xem các thực thể HTML trong bảng có thoát hay không. Có thể có các sự cố bảo mật tiềm ẩn khi bảng được hiển thị trong các ứng dụng web động chẳng hạn như Shiny nếu bạn không thoát khỏi chúng. Đây là một ví dụ nhanh

DT::datatable(head(iris), editable = 'cell')
3____24

Bên cạnh

DT::datatable(head(iris), editable = 'cell')
70 và
DT::datatable(head(iris), editable = 'cell')
71, bạn cũng có thể chỉ định cột nào bạn muốn thoát, e. g

DT::datatable(head(iris), editable = 'cell')
5

Hãy thận trọng khi sử dụng tên hàng với chỉ số cột số. Vì tên hàng sẽ trở thành cột đầu tiên trong màn hình, bạn nên tăng chỉ số cột lên một, e. g. ,

Làm cách nào để xóa thẻ HTML khỏi DataTable trong C#?

Mã biểu thức chính quy C# để xóa thẻ HTML trong C# .
chuỗi tĩnh công khai StripHtmlTags (nguồn chuỗi này)
return Regex.Replace(source, "<.*?>|&.*?;", string.Empty);.

Có thể xóa các thẻ HTML khỏi dữ liệu không?

PHP cung cấp chức năng sẵn có để xóa các thẻ HTML khỏi dữ liệu . Hàm strip_tags() là một hàm sẵn có trong PHP loại bỏ các chuỗi dạng HTML, XML và các thẻ PHP. Nó chấp nhận hai tham số. Hàm này trả về một chuỗi có tất cả các byte NULL, thẻ HTML và PHP bị loại bỏ khỏi một $str đã cho.

Làm cách nào để xóa phần tử HTML trong C#?

By using Regex: public static string RemoveHTMLTags(string html) { return Regex.Replace(html, "<.*?>", string.Empty); }.
Bằng cách sử dụng Regex đã biên dịch để có hiệu suất tốt hơn. .
Bằng cách sử dụng Char Array để có hiệu suất nhanh hơn cho một số tệp HTML

Làm cách nào để lấy chuỗi không có thẻ HTML?

Có thể xóa các thẻ HTML khỏi một chuỗi đã cho bằng cách sử dụng phương thức replaceAll() của lớp String . Chúng tôi có thể xóa các thẻ HTML khỏi một chuỗi nhất định bằng cách sử dụng biểu thức chính quy. Sau khi xóa các thẻ HTML khỏi một chuỗi, nó sẽ trả về một chuỗi dưới dạng văn bản bình thường.