Cách trích xuất số từ chuỗi php?
Phương pháp tốt nhất/hiệu quả nhất để trích xuất một bộ số cụ thể từ một chuỗi là gì? . Tôi muốn lấy bộ số ngay sau Case# vào mùa xuân "blah blah Case#004522 blah blah". Tôi tưởng tượng số lượng ký tự số sau Case# sẽ luôn giống nhau nhưng tôi muốn mã không đưa ra giả định đó như tôi đã từng Cho đến nay, tôi đã sử dụng phương thức strpos để xác định vị trí Case# và sau đó lấy một số ký tự cụ thể cho lời bạt bằng cách sử dụng chất nền. Tôi chỉ cảm thấy như thế này là vụng về. Có lẽ preg_match sẽ hiệu quả hơn hoặc đơn giản hơn?
Giải pháp tốt nhấtBạn có thể sử dụng các biểu thức chính quy để khớp mẫu ký tự đầu tiên của mình ( 4) và sau đó bạn chỉ muốn khớp các số (chữ số), đó là 5 trong PCRE (Bản trình diễn)
Đối với nhiều trận đấu (số nguyên) cùng một lúc
Giải pháp liên quanPython – Cách tốt nhất để tách dấu câu khỏi chuỗiTừ góc độ hiệu quả, bạn sẽ không đánh bại
Đối với các phiên bản Python cao hơn, hãy sử dụng đoạn mã sau
Nó đang thực hiện các thao tác chuỗi thô trong C bằng bảng tra cứu - không có nhiều thứ có thể đánh bại điều đó ngoài việc viết mã C của riêng bạn Nếu tốc độ không phải là vấn đề đáng lo ngại, thì một tùy chọn khác là
Cái này nhanh hơn s. thay thế bằng từng ký tự, nhưng sẽ không hoạt động tốt như các cách tiếp cận python không thuần túy như biểu thức chính quy hoặc chuỗi. dịch, như bạn có thể thấy từ thời gian bên dưới. Đối với loại vấn đề này, làm nó ở mức thấp nhất có thể sẽ được đền đáp mã thời gian ________số 8Điều này mang lại kết quả sau
Java – Cách tạo chuỗi Java từ nội dung của tệpĐọc tất cả văn bản từ một tập tinJava 11 đã thêm phương thức đọc các tệp nhỏ dưới dạng 6, giữ nguyên các dấu kết thúc dòng 1Đối với các phiên bản giữa Java 7 và 11, đây là một thành ngữ nhỏ gọn, mạnh mẽ, được gói gọn trong một phương thức tiện ích 2Đọc các dòng văn bản từ một tập tinJava 7 đã thêm một đại diện là một 7. Cách tiếp cận này là "mất mát" vì các dấu phân cách dòng bị loại bỏ khỏi cuối mỗi dòng 0Java 8 đã thêm phương thức để tạo một 9. Một lần nữa, phương pháp này bị mất dữ liệu vì các dấu phân cách dòng bị loại bỏ. Nếu gặp phải một 0 trong khi đọc tệp, nó sẽ được bọc trong một 1, vì 2 không chấp nhận lambdas ném các ngoại lệ đã kiểm tra 1 2 này cần một cuộc gọi; . Đảm bảo sử dụng khối ARM như được hiển thịNếu bạn đang làm việc với một nguồn không phải là một tệp, bạn có thể sử dụng phương pháp này trong 8 để thay thếSử dụng bộ nhớPhương pháp đầu tiên, bảo toàn các ngắt dòng, có thể tạm thời yêu cầu bộ nhớ gấp nhiều lần kích thước của tệp, vì trong một thời gian ngắn, nội dung tệp thô (một mảng byte) và các ký tự được giải mã (mỗi ký tự là 16 bit ngay cả khi được mã hóa . An toàn nhất là áp dụng cho các tệp mà bạn biết là nhỏ so với bộ nhớ khả dụng Phương pháp thứ hai, đọc các dòng, thường hiệu quả hơn về bộ nhớ vì bộ đệm byte đầu vào để giải mã không cần chứa toàn bộ tệp. Tuy nhiên, nó vẫn không phù hợp với các tệp rất lớn so với bộ nhớ khả dụng Để đọc các tệp lớn, bạn cần một thiết kế khác cho chương trình của mình, một thiết kế đọc một đoạn văn bản từ một luồng, xử lý nó rồi chuyển sang phần tiếp theo, sử dụng lại cùng một khối bộ nhớ có kích thước cố định. Ở đây, "lớn" phụ thuộc vào thông số kỹ thuật của máy tính. Ngày nay, ngưỡng này có thể là nhiều gigabyte RAM. Phương pháp thứ ba, sử dụng 9 là một cách để thực hiện việc này, nếu "bản ghi" đầu vào của bạn là các dòng riêng lẻ. (Sử dụng phương pháp 0 của 8 là quy trình tương đương với phương pháp này. )Mã hóa ký tựMột thứ còn thiếu trong mẫu trong bài viết gốc là mã hóa ký tự. Có một số trường hợp đặc biệt mà nền tảng mặc định là những gì bạn muốn, nhưng chúng rất hiếm và bạn sẽ có thể biện minh cho lựa chọn của mình Lớp 2 định nghĩa một số hằng số cho mã hóa được yêu cầu của tất cả thời gian chạy Java 2Nền tảng mặc định có sẵn từ chính nó 3Ghi chú. Câu trả lời này phần lớn thay thế phiên bản Java 6 của tôi. Tiện ích của Java 7 đơn giản hóa mã một cách an toàn và câu trả lời cũ, sử dụng bộ đệm byte được ánh xạ, đã ngăn không cho tệp đã đọc bị xóa cho đến khi bộ đệm được ánh xạ được thu gom rác. Bạn có thể xem phiên bản cũ qua liên kết "đã chỉnh sửa" trên câu trả lời này |