camelcase – github.com/fatih/camelcase Index | Examples | Files

package camelcase

import "github.com/fatih/camelcase"

Package camelcase is a micro package to split the words of a camelcase type string into a slice of words.

Index

Examples

Functions

func Split

func Split(src string) (entries []string)

Split splits the camelcase word and returns a list of words. It also supports digits. Both lower camel case and upper camel case are supported. For more info please check: http://en.wikipedia.org/wiki/CamelCase

Examples

"" =>                     [""]
"lowercase" =>            ["lowercase"]
"Class" =>                ["Class"]
"MyClass" =>              ["My", "Class"]
"MyC" =>                  ["My", "C"]
"HTML" =>                 ["HTML"]
"PDFLoader" =>            ["PDF", "Loader"]
"AString" =>              ["A", "String"]
"SimpleXMLParser" =>      ["Simple", "XML", "Parser"]
"vimRPCPlugin" =>         ["vim", "RPC", "Plugin"]
"GL11Version" =>          ["GL", "11", "Version"]
"99Bottles" =>            ["99", "Bottles"]
"May5" =>                 ["May", "5"]
"BFG9000" =>              ["BFG", "9000"]
"BöseÜberraschung" =>     ["Böse", "Überraschung"]
"Two  spaces" =>          ["Two", "  ", "spaces"]
"BadUTF8\xe2\xe2\xa1" =>  ["BadUTF8\xe2\xe2\xa1"]

Splitting rules

  1. If string is not valid UTF-8, return it without splitting as single item array.
  2. Assign all unicode characters into one of 4 sets: lower case letters, upper case letters, numbers, and all other characters.
  3. Iterate through characters of string, introducing splits between adjacent characters that belong to different sets.
  4. Iterate through array of split strings, and if a given string is upper case: if subsequent string is lower case: move last character of upper case string to beginning of lower case string
Example

Code:

{

	for _, c := range []string{
		"",
		"lowercase",
		"Class",
		"MyClass",
		"MyC",
		"HTML",
		"PDFLoader",
		"AString",
		"SimpleXMLParser",
		"vimRPCPlugin",
		"GL11Version",
		"99Bottles",
		"May5",
		"BFG9000",
		"BöseÜberraschung",
		"Two  spaces",
		"BadUTF8\xe2\xe2\xa1",
	} {
		fmt.Printf("%#v => %#v\n", c, Split(c))
	}

	// Output:
	// "" => []string{}
	// "lowercase" => []string{"lowercase"}
	// "Class" => []string{"Class"}
	// "MyClass" => []string{"My", "Class"}
	// "MyC" => []string{"My", "C"}
	// "HTML" => []string{"HTML"}
	// "PDFLoader" => []string{"PDF", "Loader"}
	// "AString" => []string{"A", "String"}
	// "SimpleXMLParser" => []string{"Simple", "XML", "Parser"}
	// "vimRPCPlugin" => []string{"vim", "RPC", "Plugin"}
	// "GL11Version" => []string{"GL", "11", "Version"}
	// "99Bottles" => []string{"99", "Bottles"}
	// "May5" => []string{"May", "5"}
	// "BFG9000" => []string{"BFG", "9000"}
	// "BöseÜberraschung" => []string{"Böse", "Überraschung"}
	// "Two  spaces" => []string{"Two", "  ", "spaces"}
	// "BadUTF8\xe2\xe2\xa1" => []string{"BadUTF8\xe2\xe2\xa1"}
}

Output:

"" => []string{}
"lowercase" => []string{"lowercase"}
"Class" => []string{"Class"}
"MyClass" => []string{"My", "Class"}
"MyC" => []string{"My", "C"}
"HTML" => []string{"HTML"}
"PDFLoader" => []string{"PDF", "Loader"}
"AString" => []string{"A", "String"}
"SimpleXMLParser" => []string{"Simple", "XML", "Parser"}
"vimRPCPlugin" => []string{"vim", "RPC", "Plugin"}
"GL11Version" => []string{"GL", "11", "Version"}
"99Bottles" => []string{"99", "Bottles"}
"May5" => []string{"May", "5"}
"BFG9000" => []string{"BFG", "9000"}
"BöseÜberraschung" => []string{"Böse", "Überraschung"}
"Two  spaces" => []string{"Two", "  ", "spaces"}
"BadUTF8\xe2\xe2\xa1" => []string{"BadUTF8\xe2\xe2\xa1"}

Source Files

camelcase.go

Version
v1.0.0 (latest)
Published
Oct 27, 2017
Platform
js/wasm
Imports
2 packages
Last checked
1 month ago

Tools for package owners.