Open In App

Split the string into substrings using delimiter

Last Updated : 27 Jul, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

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
JavaScript
<script>

// Javascript 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
function splitStrings(str, dl)
{
    var word = "";

    // to count the number of split strings
    var num = 0;

    // adding delimiter character at the end
    // of 'str'
    str = str + dl;

    // length of 'str'
    var l = str.length;

    // traversing 'str' from left to right
    var substr_list = [];
    for (var 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 (word.length != 0)
                substr_list.push(word);

            // reset 'word'
            word = "";
        }
    }

    // return the splitted strings
    return substr_list;
}

// Driver program to test above
var str = "geeks;for;geeks";
var dl = ';';
var res = splitStrings(str, dl);
res.forEach(x => {

    document.write( x + "<br>");
});

</script>    

Output
geeks
for
geeks

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


Next Article
Article Tags :
Practice Tags :

Similar Reads