Sanjeev
Sanjeev

Reputation: 1097

I want to split string without using split function?

I want to split string without using split . can anybody solve my problem I am tried but I cannot find the exact logic.

Upvotes: 3

Views: 76479

Answers (19)

Arindam Tripathi
Arindam Tripathi

Reputation: 1

import java.util.Scanner;
public class Split {
    static Scanner in = new Scanner(System.in);
    static void printArray(String[] array){
        for (int i = 0; i < array.length; i++) {
            if(i!=array.length-1)
            System.out.print(array[i]+",");
            else
            System.out.println(array[i]);
        }
    }
    static String delimeterTrim(String str){
        char ch = str.charAt(str.length()-1);
        if(ch=='.'||ch=='!'||ch==';'){
            str = str.substring(0,str.length()-1);
        }
        return str;
    }
    private static String [] mySplit(String text, char reg, boolean delimiterTrim) {
        if(delimiterTrim){
            text = delimeterTrim(text);
        }
        text = text.trim() + " ";
        int massValue = 0;
        for (int i = 0; i < text.length(); i++) {
            if (text.charAt(i) == reg) {
                massValue++;
            }
        }
        String[] splitArray = new String[massValue];
        for (int i = 0; i < splitArray.length; ) {
            for (int j = 0; j < text.length(); j++) {
                if (text.charAt(j) == reg) {
                    splitArray[i] = text.substring(0, j);
                    text = text.substring(j + 1, text.length());
                    j = 0;
                    i++;
                }
            }
            return splitArray;
        }
        return null;
    }
    public static void main(String[] args) {
        System.out.println("Enter the sentence :");
        String text = in.nextLine();
        //System.out.println("Enter the regex character :");
        //char regex = in.next().charAt(0);
        System.out.println("Do you want to trim the delimeter ?");
        String delch = in.next();
        boolean ch = false;
        if(delch.equalsIgnoreCase("yes")){
            ch = true;
        }
        System.out.println("Output String array is : ");
        printArray(mySplit(text,' ',ch));
    }
}

Upvotes: 0

Davoud
Davoud

Reputation: 2983

 static void splitString(String s, int index) {
        char[] firstPart = new char[index];
        char[] secondPart = new char[s.length() - index];

        int j = 0;
        for (int i = 0; i < s.length(); i++) {
            if (i < index) {
                firstPart[i] = s.charAt(i);
            } else {
                secondPart[j] = s.charAt(i);
                if (j < s.length()-index) {
                    j++;
                }
            }
        }
        System.out.println(firstPart);
        System.out.println(secondPart);
    }

Upvotes: 0

Umesh Sulakude
Umesh Sulakude

Reputation: 300

In Java8 we can use Pattern and get the things done in more easy way. Here is the code.

package com.company;

import java.util.regex.Pattern;

public class umeshtest {

    public static void main(String a[]) {
        String ss = "I'm Testing and testing the new feature";
        Pattern.compile(" ").splitAsStream(ss).forEach(s -> System.out.println(s));
    }
}

Upvotes: 0

Taufique
Taufique

Reputation: 1

public class StringWitoutPre {

    public static void main(String[] args) {

        String str = "md taufique reja";
        int len = str.length();
        char ch[] = str.toCharArray();
        String tmp = " ";
        boolean flag = false;

        for (int i = 0; i < str.length(); i++) {
            if (ch[i] != ' ') {
                tmp = tmp + ch[i];
                flag = false;
            } else {
                flag = true;
            }
            if (flag || i == len - 1) {
                System.out.println(tmp);
                tmp = " ";
            }
        }
    }
}

Upvotes: 0

user12088396
user12088396

Reputation:

Here is my way of doing with Scanner;

import java.util.Scanner;

public class spilt {

    public static void main(String[] args)
    {
         Scanner input = new Scanner(System.in);
         System.out.print("Enter the String to be Spilted : ");
         String st = input.nextLine();
         Scanner str = new Scanner(st);
         while (str.hasNext())
         {
             System.out.println(str.next());
         }


    }

}

Hope it Helps!!!!!

Upvotes: 0

BiBi
BiBi

Reputation: 15

you can try, the way i did `{

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();

    for(int i = 0; i <str.length();i++) {
        if(str.charAt(i)==' ') { // whenever it found space it'll create separate words from string
            System.out.println();
            continue;
        }
        System.out.print(str.charAt(i));
    }
    sc.close();
}` 

Upvotes: 1

Olexander Yushko
Olexander Yushko

Reputation: 2914

/**
 * My method split without javas split.
 * Return array with words after mySplit from two texts;
 * Uses trim.
 */

public class NoJavaSplit {

    public static void main(String[] args) {
        String text1 = "Some text for example   ";
        String text2 = "   Second sentences     ";
        System.out.println(Arrays.toString(mySplit(text1, text2)));
    }

    private static String [] mySplit(String text1, String text2) {
        text1 = text1.trim() + " " + text2.trim() + " ";
        char n = ' ';
        int massValue = 0;
        for (int i = 0; i < text1.length(); i++) {
            if (text1.charAt(i) == n) {
                massValue++;
            }
        }
        String[] splitArray = new String[massValue];
        for (int i = 0; i < splitArray.length; ) {
            for (int j = 0; j < text1.length(); j++) {
                if (text1.charAt(j) == n) {
                    splitArray[i] = text1.substring(0, j);
                    text1 = text1.substring(j + 1, text1.length());
                    j = 0;
                    i++;
                }
            }
            return splitArray;
        }
        return null;
    }
}

Upvotes: 1

Chandratap Kar
Chandratap Kar

Reputation: 1

Split a string without using split()

static String[] splitAString(String abc, char splitWith){
    char[] ch=abc.toCharArray();
    String temp="";
    int j=0,length=0,size=0;
    for(int i=0;i<abc.length();i++){
        if(splitWith==abc.charAt(i)){
            size++;
        }
    }
    String[] arr=new String[size+1];
    for(int i=0;i<ch.length;i++){
        if(length>j){
            j++;
            temp="";
        }
        if(splitWith==ch[i]){
            length++;
        }else{
            temp +=Character.toString(ch[i]);          
        }
    arr[j]=temp;
    }
    return arr;
}
public static void main(String[] args) {

    String[] arr=splitAString("abc-efg-ijk", '-');

    for(int i=0;i<arr.length;i++){
        System.out.println(arr[i]);
    }
}

}

Upvotes: -1

Sanjeev
Sanjeev

Reputation: 1097

This is the right answer

import java.util.StringTokenizer;

public class tt {
    public static void main(String a[]){
    String s = "012ab567ab0123ab";

    String delims = "ab ";

    StringTokenizer st = new StringTokenizer(s, delims);
            System.out.println("No of Token = " + st.countTokens());

             while (st.hasMoreTokens())
             {
                 System.out.println(st.nextToken());
             }

     }

}

Upvotes: 1

Gautam Kushwaha
Gautam Kushwaha

Reputation: 291

public class WithoutSpit_method {
    public static void main(String arg[])
    {

       char[]str;
       String s="Computer_software_developer_gautam";
       String s1[];
       for(int i=0;i<s.length()-1;)
       {
       int lengh=s.indexOf("_",i); 
       if(lengh==-1)
       {
           lengh=s.length();
       }
       System.out.print(" "+s.substring(i,lengh));
       i=lengh+1;
       }

    }
}

Result: Computer software developer gautam

Upvotes: 0

Akhilesh Dhar Dubey
Akhilesh Dhar Dubey

Reputation: 2148

public class MySplit {

public static String[] mySplit(String text,String delemeter){
    java.util.List<String> parts = new java.util.ArrayList<String>();
    text+=delemeter;        

    for (int i = text.indexOf(delemeter), j=0; i != -1;) {
        parts.add(text.substring(j,i));
        j=i+delemeter.length();
        i = text.indexOf(delemeter,j);
    }


    return parts.toArray(new String[0]);
}

public static void main(String[] args) {
    String str="012ab567ab0123ab";
    String delemeter="ab";
    String result[]=mySplit(str,delemeter);
    for(String s:result)
        System.out.println(s);
}

}

Upvotes: 0

Rakesh Sahu
Rakesh Sahu

Reputation: 11

Use String tokenizer to split strings in Java without split:

import java.util.StringTokenizer;

public class tt {
    public static void main(String a[]){
        String s = "012ab567ab0123ab";
        String delims = "ab ";
        StringTokenizer st = new StringTokenizer(s, delims);
        System.out.println("No of Token = " + st.countTokens());
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
    }
}

Upvotes: 1

DemonHunter
DemonHunter

Reputation: 21

You can do it using Java standard libraries.

Say the delimiter is : and

String s = "Harry:Potter"
int a = s.find(delimiter);

and then add

s.substring(start, a)

to a new String array.

Keep doing this till your start < string length

Should be enough I guess.

Upvotes: 0

polygenelubricants
polygenelubricants

Reputation: 383936

I'm going to assume that this is homework, so I will only give snippets as hints:

Finding indices of all occurrences of a given substring

Here's an example of using indexOf with the fromIndex parameter to find all occurrences of a substring within a larger string:

String text = "012ab567ab0123ab";

// finding all occurrences forward: Method #1
for (int i = text.indexOf("ab"); i != -1; i = text.indexOf("ab", i+1)) {
    System.out.println(i);
} // prints "3", "8", "14"

// finding all occurrences forward: Method #2
for (int i = -1; (i = text.indexOf("ab", i+1)) != -1; ) {
    System.out.println(i);
} // prints "3", "8", "14"

String API links

  • int indexOf(String, int fromIndex)
    • Returns the index within this string of the first occurrence of the specified substring, starting at the specified index. If no such occurrence exists, -1 is returned.

Related questions


Extracting substrings at given indices out of a string

This snippet extracts substring at given indices out of a string and puts them into a List<String>:

String text = "0123456789abcdefghij";

List<String> parts = new ArrayList<String>();
parts.add(text.substring(0, 5));
parts.add(text.substring(3, 7));
parts.add(text.substring(9, 13));
parts.add(text.substring(18, 20));

System.out.println(parts); // prints "[01234, 3456, 9abc, ij]"

String[] partsArray = parts.toArray(new String[0]);

Some key ideas:

  • Effective Java 2nd Edition, Item 25: Prefer lists to arrays
    • Works especially nicely if you don't know how many parts there'll be in advance

String API links

Related questions

Upvotes: 5

Matchu
Matchu

Reputation: 85832

Since this seems to be a task designed as coding practice, I'll only guide. No code for you, sir, though the logic and the code aren't that far separated.

You will need to loop through each character of the string, and determine whether or not the character is the delimiter (comma or semicolon, for instance). If not, add it to the last element of the array you plan to return. If it is the delimiter, create a new empty string as the array's last element to start feeding your characters into.

Upvotes: 11

Peter Tillemans
Peter Tillemans

Reputation: 35341

You do now that most of the java standard libraries are open source

In this case you can start here

Upvotes: 1

Roland Illig
Roland Illig

Reputation: 41686

The way to go is to define the function you need first. In this case, it would probably be:

String[] split(String s, String separator)

The return type doesn't have to be an array. It can also be a list:

List<String> split(String s, String separator)

The code would then be roughly as follows:

  1. start at the beginning
  2. find the next occurence of the delimiter
  3. the substring between the end of the previous delimiter and the start of the current delimiter is added to the result
  4. continue with step 2 until you have reached the end of the string

There are many fine points that you need to consider:

  • What happens if the string starts or ends with the delimiter?
  • What if multiple delimiters appear next to each other?
  • What should be the result of splitting the empty string? (1 empty field or 0 fields)

Upvotes: 0

Babiker
Babiker

Reputation: 18798

You cant split with out using split(). Your only other option is to get the strings char indexes and and get sub strings.

Upvotes: -2

Jack
Jack

Reputation: 133609

The logic is: go through the whole string starting from first character and whenever you find a space copy the last part to a new string.. not that hard?

Upvotes: 0

Related Questions