Câu trả lời từ DigitalRoss sẽ không nhận ra từ viết tắt nhúng trong CamelCase. Ví dụ: nó sẽ tách "MyHTMLTricks" thành "My H T M L Tricks" thay vì "My HTML Tricks".
Dưới đây là một lựa chọn dựa trên AsSpaced()
chức năng trong PmWiki, mà làm một công việc tuyệt vời của việc nhạy cảm với các trường hợp như thế này:
"MyHTMLTricks" \
.gsub(/([[:lower:]\\d])([[:upper:]])/, '\1 \2') \
.gsub(/([^-\\d])(\\d[-\\d]*(|$))/,'\1 \2') \
.gsub(/([[:upper:]])([[:upper:]][[:lower:]\\d])/, '\1 \2')
=> "My HTML Tricks"
Một điều khác tôi thích về cách tiếp cận này là nó rời khỏi chuỗi một chuỗi, thay vì biến nó thành một mảng. Nếu bạn thực sự muốn mảng, sau đó chỉ cần thêm một phần ở cuối.
"MyHTMLTricks" \
.gsub(/([[:lower:]\\d])([[:upper:]])/, '\1 \2') \
.gsub(/([^-\\d])(\\d[-\\d]*(|$))/,'\1 \2') \
.gsub(/([[:upper:]])([[:upper:]][[:lower:]\\d])/, '\1 \2') \
.split
=> ["My", "HTML", "Tricks"]
Để lưu nội dung, đây là mã PHP gốc từ PmWiki.
function AsSpaced($text) {
$text = preg_replace("/([[:lower:]\\d])([[:upper:]])/", '$1 $2', $text);
$text = preg_replace('/([^-\\d])(\\d[-\\d]*(|$))/', '$1 $2', $text);
return preg_replace("/([[:upper:]])([[:upper:]][[:lower:]\\d])/", '$1 $2', $text);
}
Bạn muốn làm gì với 'ThisIsANarrowImageOfHIV?' Tham gia với n hoặc chia nhỏ HIV? –