From 6a4c557c93a6abeac28c3642b2e1f4c57a037389 Mon Sep 17 00:00:00 2001 From: Muhamed <Muhamedalici@hotmail.de> Date: Thu, 27 Mar 2025 22:32:10 +0100 Subject: [PATCH] Feature 7 custom delim --- String calculator | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/String calculator b/String calculator index 6272dcf..f118540 100644 --- a/String calculator +++ b/String calculator @@ -21,6 +21,10 @@ #1001 + 2 should return 2 #1001 -2 should return negatives not allowed +#custom delimiters +#input "//[***]\n1***2***3" +#output 6 + import unittest import re @@ -33,13 +37,16 @@ class StringCalculator: if numbers.startswith("//"): delimiter_end_index = numbers.index("\n") - delimiter = numbers[2:delimiter_end_index] + delimiter_section = numbers[2:delimiter_end_index] + numbers = numbers[delimiter_end_index +1:] - if delimiter.startswith("[")and delimiter.endswith("]"): - delimiter = delimiter[1:-1] + if delimiter_section.startswith("[")and delimiter_section.endswith("]"): + delimiters = re.findall(r'\[([^\]]+)\]',delimiter_section) + else: + delimiters= [delimiter_section] - numbers = numbers[delimiter_end_index + 1:] - numbers = numbers.replace(delimiter,",") + for delimiters in delimiters: + numbers = numbers.replace(delimiters,",") numbers = numbers.replace("\n",",") @@ -116,6 +123,8 @@ class TestStingCalculator(unittest.TestCase): with self.assertRaises(ValueError) as e: self.calculator.add("//;\n-3,4;1001") self.assertEqual(str(e.exception),"negatives not allowed: -3") + def test_custom_delimiter(self): + self.assertEqual(self.calculator.add("//[***]\n1***2***3"),6) -- GitLab