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
<mailto:michael.jo...@gmail.com>> wrote:
Like this?
https://play.golang.org/p/OIE8jdWVGB
<https://play.golang.org/p/OIE8jdWVGB>
On Tue, Sep 5, 2017 at 12:33 PM, Tong Sun <suntong...@gmail.com
<mailto: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
<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 <mailto: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
<https://play.golang.org/p/kuk6FxesDq>.
Although I wrote a benchmark
(https://play.golang.org/p/YpnI257SHD
<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/3d0d998bef3db3937496933778c55e4f01cab5e4/text.go#L37-L60
<https://github.com/go-dedup/text/blob/3d0d998bef3db3937496933778c55e4f01cab5e4/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)
fori :=len(w)-1;i >1;i--{
ifunicode.IsUpper(w[i]){
w =append(w[:i],append([]rune{' '},w[i:]...)...)
}
}
returnstring(w)
}
|
|
func camelRegexp(str string)string{
re :=regexp.MustCompile(`([A-Z]+)`)
str =re.ReplaceAllString(str,` $1`)
str =strings.Trim(str," ")
returnstr
}
|
|
$ go test -bench=.
goos:darwin
goarch:amd64
BenchmarkCamelAppend-43000000444ns/op
BenchmarkCamelRegexp-420000011224ns/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
<http://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
<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/topic/golang-nuts/MmerkVS9ke0/unsubscribe
<https://groups.google.com/d/topic/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
<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/topic/golang-nuts/MmerkVS9ke0/unsubscribe
<https://groups.google.com/d/topic/golang-nuts/MmerkVS9ke0/unsubscribe>.
To unsubscribe from this group and all its topics, send an
email to golang-nuts+unsubscr...@googlegroups.com
<mailto:golang-nuts+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout
<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
<mailto:golang-nuts+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Michael T. Jones
michael.jo...@gmail.com <mailto: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
<mailto: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.