Open In App

Split the string into substrings using delimiter

Last Updated : 27 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
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.



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads