Check if a String is Uppercase in Golang

1 min read 223 words

The challenge

Create a method IsUpperCase to see whether the string is ALL CAPS. For example:

type MyString string
MyString("c").IsUpperCase() == false
MyString("C").IsUpperCase() == true
MyString("hello I AM DONALD").IsUpperCase() == false
MyString("HELLO I AM DONALD").IsUpperCase() == true
MyString("ACSKLDFJSgSKLDFJSKLDFJ").IsUpperCase() == false
MyString("ACSKLDFJSGSKLDFJSKLDFJ").IsUpperCase() == true

In this challenge, a string is said to be in ALL CAPS whenever it does not contain any lowercase letter so any string containing no letters at all is trivially considered to be in ALL CAPS.

The solution in Golang

Option 1:

package solution

import "strings"

type MyString string

func (s MyString) IsUpperCase() bool {
  return s == MyString(strings.ToUpper(string(s)))
}

Option 2:

package solution

type MyString string

func (s MyString) IsUpperCase() bool {
  for _, letter := range s {
    if int(letter) >= 97 && int(letter) <= 122 {
      return false
    }
  }
  return true
}

Option 3:

package solution

import "regexp"

type MyString string

func (s MyString) IsUpperCase() bool {
  r, _ := regexp.Compile(`^[A-Z\s]+$`)
  return r.MatchString(string(s))
}

Test cases to validate our solution

package our_test

import (
  . "github.com/onsi/ginkgo"
  . "github.com/onsi/gomega"
)

var _ = Describe("Sample Test Cases:", func() {
  It("Should return the correct values", func() {
    Expect(MyString("a").IsUpperCase()).To(Equal(false))
    Expect(MyString("b").IsUpperCase()).To(Equal(false))
    Expect(MyString("c").IsUpperCase()).To(Equal(false))
    Expect(MyString("d").IsUpperCase()).To(Equal(false))
    Expect(MyString("e").IsUpperCase()).To(Equal(false))
    Expect(MyString("f").IsUpperCase()).To(Equal(false))
    Expect(MyString("g").IsUpperCase()).To(Equal(false))
    Expect(MyString("h").IsUpperCase()).To(Equal(false))
    Expect(MyString("i").IsUpperCase()).To(Equal(false))
    Expect(MyString("j").IsUpperCase()).To(Equal(false))
    Expect(MyString("k").IsUpperCase()).To(Equal(false))
    Expect(MyString("l").IsUpperCase()).To(Equal(false))
    Expect(MyString("m").IsUpperCase()).To(Equal(false))
    Expect(MyString("n").IsUpperCase()).To(Equal(false))
    Expect(MyString("o").IsUpperCase()).To(Equal(false))
    Expect(MyString("p").IsUpperCase()).To(Equal(false))
    Expect(MyString("q").IsUpperCase()).To(Equal(false))
    Expect(MyString("r").IsUpperCase()).To(Equal(false))
    Expect(MyString("s").IsUpperCase()).To(Equal(false))
    Expect(MyString("t").IsUpperCase()).To(Equal(false))
    Expect(MyString("u").IsUpperCase()).To(Equal(false))
    Expect(MyString("v").IsUpperCase()).To(Equal(false))
    Expect(MyString("w").IsUpperCase()).To(Equal(false))
    Expect(MyString("x").IsUpperCase()).To(Equal(false))
    Expect(MyString("y").IsUpperCase()).To(Equal(false))
    Expect(MyString("z").IsUpperCase()).To(Equal(false))
    Expect(MyString("false").IsUpperCase()).To(Equal(false))
    Expect(MyString("true").IsUpperCase()).To(Equal(false))
    Expect(MyString("False").IsUpperCase()).To(Equal(false))
    Expect(MyString("True").IsUpperCase()).To(Equal(false))
  })
})
Tags:
Andrew
Andrew

Andrew is a visionary software engineer and DevOps expert with a proven track record of delivering cutting-edge solutions that drive innovation at Ataiva.com. As a leader on numerous high-profile projects, Andrew brings his exceptional technical expertise and collaborative leadership skills to the table, fostering a culture of agility and excellence within the team. With a passion for architecting scalable systems, automating workflows, and empowering teams, Andrew is a sought-after authority in the field of software development and DevOps.

Tags

Recent Posts