Die Antwort von DigitalRoss nicht eingebettet Akronyme in der Camelcase erkennen. Zum Beispiel wird "MyHTMLTricks" in "My H T M L Tricks" anstelle von "My HTML Tricks" aufgeteilt.
Hier ist eine weitere Option auf der Grundlage der AsSpaced()
Funktion in PmWiki, die von empfindlich auf Fälle wie diese ganze Arbeit:
"MyHTMLTricks" \
.gsub(/([[:lower:]\\d])([[:upper:]])/, '\1 \2') \
.gsub(/([^-\\d])(\\d[-\\d]*(|$))/,'\1 \2') \
.gsub(/([[:upper:]])([[:upper:]][[:lower:]\\d])/, '\1 \2')
=> "My HTML Tricks"
Die andere Sache, die ich an diesem Ansatz ist, dass es die Zeichenfolge verläßt eine Zeichenfolge, anstatt sie in ein Array umzuwandeln. Wenn Sie das Array wirklich wollen, fügen Sie am Ende einfach einen Split hinzu.
"MyHTMLTricks" \
.gsub(/([[:lower:]\\d])([[:upper:]])/, '\1 \2') \
.gsub(/([^-\\d])(\\d[-\\d]*(|$))/,'\1 \2') \
.gsub(/([[:upper:]])([[:upper:]][[:lower:]\\d])/, '\1 \2') \
.split
=> ["My", "HTML", "Tricks"]
Für den Rekord, hier ist der ursprüngliche PHP-Code von 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);
}
Was möchten Sie mit ThisIsANarrowImageOfHIV tun? Machen Sie eine Verbindung mit n, oder teilen Sie HIV auf? –