Precisely, though probably a renaming is in order:
https://play.golang.org/p/AZ7Ptg4HYP

On Wed, Sep 6, 2017 at 6:58 AM, Steven Hartland <ste...@multiplay.co.uk>
wrote:

> Numbers don't match IsLower so how about:
> https://play.golang.org/p/Z6q9dJZ7QK
>
>
> On 06/09/2017 14:12, Tong Sun wrote:
>
> Almost, https://play.golang.org/p/6Zl_EKqFqT
> But thanks a lot! It's significantly shorter/better than my initial
> version.
>
> On Tue, Sep 5, 2017 at 6:18 PM, Michael Jones <michael.jo...@gmail.com>
> wrote:
>
>> Like this?
>>
>> https://play.golang.org/p/OIE8jdWVGB
>>
>> On Tue, Sep 5, 2017 at 12:33 PM, Tong Sun <suntong...@gmail.com> wrote:
>>
>>>
>>> I'll be religiously avoiding "*unicode.IsUpper*()" as something mystery
>>> happened in the past:
>>> https://groups.google.com/d/msg/golang-nuts/714WQs85H3w/KEqKgmAqAAAJ
>>>
>>> BTW, *for my case*, I do need the string,
>>>
>>> "FooBarBaz GNU PYTHON Standard"
>>>
>>> to be split exactly to be
>>>
>>> "Foo Bar Baz GNU PYTHON Standard"
>>>
>>> I.e., 6 words altogether, no more spacing than this.
>>>
>>> thanks again for helping and showing me you benchmark code.
>>>
>>>
>>> On Tue, Sep 5, 2017 at 1:35 PM, Florian Florensen <f...@posteo.de>
>>> wrote:
>>>
>>>> I've just joined the group and had to get activated, that's why my
>>>> answer took so long. Should have waited until then.
>>>>
>>>> Thank you for the notice! I fixed it in the playground:
>>>> https://play.golang.org/p/kuk6FxesDq.
>>>> Although I wrote a benchmark (https://play.golang.org/p/YpnI257SHD), I
>>>> didn't write tests. Sorry for that!
>>>>
>>>> I still would use Seths version, since it correctly splits
>>>> uppercase-words like CAMELCase to ["C" "A" "M" "E" "L" "Case"].
>>>>
>>>> Am Dienstag, 5. September 2017 03:43:22 UTC+2 schrieb Tong Sun:
>>>>>
>>>>> Oh thanks a lot Florian!
>>>>>
>>>>> I wished I had received it earlier (my email header said, Created at:
>>>>> Sun, Sep 3, 2017 at 6:03 PM (Delivered after 89531 seconds)), because my
>>>>> own version is embarrassingly complicated:
>>>>>
>>>>> https://github.com/go-dedup/text/blob/3d0d998bef3db393749693
>>>>> 3778c55e4f01cab5e4/text.go#L37-L60
>>>>>
>>>>> I'll go with the simple camelRegexp, because to be fair,
>>>>> the camelAppend is not handing the cases that camelRegexp is handling,
>>>>> e.g., "FooBarBaz GNU PYTHON Standard", and I'll make it not inserting 
>>>>> space
>>>>> if there is already one there...
>>>>>
>>>>> PS. did you have to write extra code (not published here) to use `go
>>>>> test -bench=.`?
>>>>>
>>>>> thx
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Sep 3, 2017 at 6:03 PM, Florian Florensen <fl...@posteo.de>
>>>>> wrote:
>>>>>
>>>>>> Hi, two approaches would be:
>>>>>>
>>>>>> func camelAppend(str string) string {
>>>>>>   w := []rune(str)
>>>>>>   for i := len(w) - 1; i > 1; i-- {
>>>>>>     if unicode.IsUpper(w[i]) {
>>>>>>       w = append(w[:i], append([]rune{' '}, w[i:]...)...)
>>>>>>     }
>>>>>>   }
>>>>>>   return string(w)
>>>>>> }
>>>>>>
>>>>>> func camelRegexp(str string) string {
>>>>>>   re := regexp.MustCompile(`([A-Z]+)`)
>>>>>>   str = re.ReplaceAllString(str, ` $1`)
>>>>>>   str = strings.Trim(str, " ")
>>>>>>   return str
>>>>>> }
>>>>>>
>>>>>> $ go test -bench=.
>>>>>> goos: darwin
>>>>>> goarch: amd64
>>>>>> BenchmarkCamelAppend-4   3000000       444 ns/op
>>>>>> BenchmarkCamelRegexp-4    200000     11224 ns/op
>>>>>> PASS
>>>>>>
>>>>>>
>>>>>> Am Sonntag, 3. September 2017 23:23:59 UTC+2 schrieb Tong Sun:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I need to split "CamelCaseWords" into individual words like "Camel
>>>>>>> Case Words".
>>>>>>> The following is the Perl code that I get for doing just that:
>>>>>>>
>>>>>>>     @words = $words[0] =~ /[A-Z][^A-Z]*/g
>>>>>>>         if @words == 1 && $words[0] =~ /^[A-Z]/;
>>>>>>>
>>>>>>> However, I've been staring at it long enough to confirm myself that
>>>>>>> I really don't quite understand how it was done.
>>>>>>>
>>>>>>> Anyway, I'm wondering what's the neat way to do it in Go.
>>>>>>>
>>>>>>> PS. if you must know, I know that the algorithm I can borrow from is
>>>>>>> github.com/danverbraganza/varcaser, but when I was trying to use
>>>>>>> it, I noticed a side effect that makes it works for "myConstantVariable"
>>>>>>> but not for "GNU PYTHON Standard":
>>>>>>> https://github.com/danverbraganza/varcaser/issues/1
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> --
>>>>>> You received this message because you are subscribed to a topic in
>>>>>> the Google Groups "golang-nuts" group.
>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>>> pic/golang-nuts/MmerkVS9ke0/unsubscribe.
>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>> golang-nuts...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "golang-nuts" group.
>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>> pic/golang-nuts/MmerkVS9ke0/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> golang-nuts+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to golang-nuts+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Michael T. Jones
>> michael.jo...@gmail.com
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Michael T. Jones
michael.jo...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to