Skip to content
Related Articles

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

Source: Microsoft IDC Bangalore Interview | Set 153.

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 <bits/stdc++.h>
using namespace std;
  
// function to split string into substrings on the
// basis of delimiter and return the substrings
// after split
vector<string> 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<string> 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<string> 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<String> 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<String> substr_list = new Vector<String>();
        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<String> 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<String> 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<String> substr_list = new List<String>();
        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<String> 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
Recommended Articles
Page :