From c7af2c21d122289b3235e4ac32bdada54c8c260c Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Fri, 26 Apr 2024 18:50:21 +0530 Subject: [PATCH] builtin.string: fix `is_upper` and `is_lower` with numbers (#21357) --- vlib/builtin/string.v | 6 ++++++ vlib/builtin/string_test.v | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/vlib/builtin/string.v b/vlib/builtin/string.v index 5ea321c6752d89..0494be2a62a546 100644 --- a/vlib/builtin/string.v +++ b/vlib/builtin/string.v @@ -1524,6 +1524,9 @@ pub fn (s string) to_lower() string { // Example: assert 'hello developer'.is_lower() == true @[direct_array_access] pub fn (s string) is_lower() bool { + if s[0].is_digit() { + return false + } for i in 0 .. s.len { if s[i] >= `A` && s[i] <= `Z` { return false @@ -1555,6 +1558,9 @@ pub fn (s string) to_upper() string { // Example: assert 'HELLO V'.is_upper() == true @[direct_array_access] pub fn (s string) is_upper() bool { + if s[0].is_digit() { + return false + } for i in 0 .. s.len { if s[i] >= `a` && s[i] <= `z` { return false diff --git a/vlib/builtin/string_test.v b/vlib/builtin/string_test.v index 82a0ce8ff99e9d..c0427e4c6f2ce6 100644 --- a/vlib/builtin/string_test.v +++ b/vlib/builtin/string_test.v @@ -1013,6 +1013,9 @@ fn test_lower() { assert s.to_lower() == 'hi' assert 'aloha!'[0] == `a` assert 'aloha!'[5] == `!` + s = '123' + assert !s.is_lower() + assert s.to_lower() == '123' } fn test_upper() { @@ -1033,6 +1036,9 @@ fn test_upper() { s = 'HI' assert s.is_upper() assert s.to_upper() == 'HI' + s = '123' + assert !s.is_upper() + assert s.to_upper() == '123' } fn test_capitalize() {