Related Articles
Split the string into substrings using delimiter
• Difficulty Level : Easy
• Last Updated : 28 Feb, 2019

Given a string and a delimiter character. Split the string based on the delimiter and print the list of resulting sub strings.

Examples:

```Input : str = "geeks;for;geeks"
d_ch = ';'
Output : geeks
for
geeks

Input : str = "##ayush##jauhari####"
d_ch = '#'
Output : ayush
jauhari
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Algorithm:

```splitStrings(str, substr_list, dl)
Initialize word = ""
Initialize num = 0
str = str + dl
l = str.size

for i = 0 to l-1
if str[i] != dl
word = word + str[i]
else
if word.size != 0
substr_list[num] = word
num++
word = ""

return num
```

This algorithm will fill in the splitted substrings in the array substr_list[] and will return the number of such substrings as num.

## C++

 `// C++ implementation to split string into``// substrings on the basis of delimiter``#include ``using` `namespace` `std;`` ` `// function to split string into substrings on the``// basis of delimiter and return the substrings``// after split``vector splitStrings(string str, ``char` `dl)``{``    ``string word = ``""``;`` ` `    ``// to count the number of split strings``    ``int` `num = 0;`` ` `    ``// adding delimiter character at the end``    ``// of 'str'``    ``str = str + dl;`` ` `    ``// length of 'str'``    ``int` `l = str.size();`` ` `    ``// traversing 'str' from left to right``    ``vector substr_list;``    ``for` `(``int` `i = 0; i < l; i++) {`` ` `        ``// if str[i] is not equal to the delimiter``        ``// character then accumulate it to 'word'``        ``if` `(str[i] != dl)``            ``word = word + str[i];`` ` `        ``else` `{`` ` `            ``// if 'word' is not an empty string,``            ``// then add this 'word' to the array``            ``// 'substr_list[]'``            ``if` `((``int``)word.size() != 0)``                ``substr_list.push_back(word);`` ` `            ``// reset 'word'``            ``word = ``""``;``        ``}``    ``}`` ` `    ``// return the splitted strings``    ``return` `substr_list;``}`` ` `// Driver program to test above``int` `main()``{``    ``string str = ``"geeks;for;geeks"``;``    ``char` `dl = ``';'``;`` ` `    ``vector res = splitStrings(str, dl);``    ``for` `(``auto` `x : res)``        ``cout << x << endl;`` ` `    ``return` `0;``}`

## Java

 `// Java implementation to split String into``// substrings on the basis of delimiter``import` `java.util.*;`` ` `class` `GFG ``{`` ` `    ``// function to split String into subStrings ``    ``// on the basis of delimiter and return ``    ``// the subStrings after split``    ``static` `Vector splitStrings(String str, ``char` `dl) ``    ``{``        ``String word = ``""``;`` ` `        ``// to count the number of split Strings``        ``int` `num = ``0``;`` ` `        ``// adding delimiter character ``        ``// at the end of 'str'``        ``str = str + dl;`` ` `        ``// length of 'str'``        ``int` `l = str.length();`` ` `        ``// traversing 'str' from left to right``        ``Vector substr_list = ``new` `Vector();``        ``for` `(``int` `i = ``0``; i < l; i++)``        ``{`` ` `            ``// if str[i] is not equal to the delimiter``            ``// character then accumulate it to 'word'``            ``if` `(str.charAt(i) != dl)``            ``{``                ``word = word + str.charAt(i);``            ``} ``            ``else` `            ``{`` ` `                ``// if 'word' is not an empty String,``                ``// then add this 'word' to the array``                ``// 'substr_list[]'``                ``if` `((``int``) word.length() != ``0``) ``                ``{``                    ``substr_list.add(word);``                ``}`` ` `                ``// reset 'word'``                ``word = ``""``;``            ``}``        ``}`` ` `        ``// return the splitted Strings``        ``return` `substr_list;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args) ``    ``{``        ``String str = ``"geeks;for;geeks"``;``        ``char` `dl = ``';'``;``        ``Vector res = splitStrings(str, dl);``        ``for` `(String x : res) ``        ``{``            ``System.out.println(x);``        ``}``    ``}``}`` ` `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python 3 implementation to split string ``# into substrings on the basis of delimiter`` ` `# function to split string into substrings ``# on the basis of delimiter and return the ``# substrings after split``def` `splitStrings(st, dl):``    ``word ``=` `""`` ` `    ``# to count the number of split strings``    ``num ``=` `0`` ` `    ``# adding delimiter character at ``    ``# the end of 'str'``    ``st ``+``=` `dl`` ` `    ``# length of 'str'``    ``l ``=` `len``(st)`` ` `    ``# traversing 'str' from left to right``    ``substr_list ``=` `[]``    ``for` `i ``in` `range``(l):``         ` `        ``# if str[i] is not equal to the ``        ``# delimiter character then accumulate``        ``# it to 'word'``        ``if` `(st[i] !``=` `dl):``            ``word ``+``=` `st[i]`` ` `        ``else``:``             ` `            ``# if 'word' is not an empty string,``            ``# then add this 'word' to the array``            ``# 'substr_list[]'``            ``if` `(``len``(word) !``=` `0``):``                ``substr_list.append(word)`` ` `            ``# reset 'word'``            ``word ``=` `""``         ` `    ``# return the splitted strings``    ``return` `substr_list`` ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``str` `=` `"geeks;for;geeks"``    ``dl ``=` `';'`` ` `    ``res ``=` `splitStrings(``str``, dl)``    ``for` `x ``in` `range``(``len``(res)):``        ``print``(res[x])`` ` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# implementation to split String into``// substrings on the basis of delimiter``using` `System;``using` `System.Collections.Generic; `` ` `class` `GFG ``{`` ` `    ``// function to split String into subStrings ``    ``// on the basis of delimiter and return ``    ``// the subStrings after split``    ``static` `List splitStrings(String str, ``char` `dl) ``    ``{``        ``String word = ``""``;`` ` `        ``// to count the number of split Strings``        ``int` `num = 0;`` ` `        ``// adding delimiter character ``        ``// at the end of 'str'``        ``str = str + dl;`` ` `        ``// length of 'str'``        ``int` `l = str.Length;`` ` `        ``// traversing 'str' from left to right``        ``List substr_list = ``new` `List();``        ``for` `(``int` `i = 0; i < l; i++)``        ``{`` ` `            ``// if str[i] is not equal to the delimiter``            ``// character then accumulate it to 'word'``            ``if` `(str[i] != dl)``            ``{``                ``word = word + str[i];``            ``} ``            ``else``            ``{`` ` `                ``// if 'word' is not an empty String,``                ``// then add this 'word' to the array``                ``// 'substr_list[]'``                ``if` `((``int``) word.Length != 0) ``                ``{``                    ``substr_list.Add(word);``                ``}`` ` `                ``// reset 'word'``                ``word = ``""``;``            ``}``        ``}`` ` `        ``// return the splitted Strings``        ``return` `substr_list;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `Main() ``    ``{``        ``String str = ``"geeks;for;geeks"``;``        ``char` `dl = ``';'``;``        ``List res = splitStrings(str, dl);``        ``foreach` `(String x ``in` `res) ``        ``{``            ``Console.WriteLine(x);``        ``}``    ``}``}`` ` `//This code is contributed by 29AjayKumar`

Output:

```geeks
for
geeks
```

Time Complexity: O(n), where n is the length of the given string.

My Personal Notes arrow_drop_up