Santhosha
Santhosha

Reputation: 431

Dividing a string into substring in JAVA

As per my project I need to devide a string into two parts.

below is the example:

String searchFilter = "(first=sam*)(last=joy*)";

Where searchFilter is a string. I want to split above string to two parts

first=sam* and last=joy* so that i can again split this variables into first,sam*,last and joy* as per my requirement.

I dont have much hands on experience in java. Can anyone help me to achieve this one. It will be very helpfull.

Thanks in advance

Upvotes: 1

Views: 3166

Answers (6)

Davide Ungari
Davide Ungari

Reputation: 1960

I think you can do it in a lot of different ways, it depends on you. Using regexp or what else look at https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html.

Anyway I suggest:

int separatorIndex = searchFilter.indexOf(")(");
String filterFirst = searchFilter.substring(1,separatorIndex);
String filterLast = searchFilter.substring(separatorIndex+1,searchFilter.length-1);

Upvotes: 1

Shashank T
Shashank T

Reputation: 649

I have a small code that will solve ur problem

StringTokenizer st = new StringTokenizer(searchFilter, "(||)||=");
        while(st.hasMoreTokens()){
            System.out.println(st.nextToken());
        }

It will give the result you want.

Upvotes: 1

Andreas Dolk
Andreas Dolk

Reputation: 114767

This (untested snippet) could do it:

 String[] properties = searchFilter.replaceAll("(", "").split("\)");
 for (String property:properties) {
   if (!property.equals("")) {
      String[] parts = property.split("=");
      // some method to store the filter properties
      storeKeyValue(parts[0], parts[1]); 
   }
 }

The idea behind: First we get rid of the brackets, replacing the opening brackets and using the closing brackets as a split point for the filter properties. The resulting array includes the String {"first=sam*","last=joy*",""} (the empty String is a guess - can't test it here). Then for each property we split again on "=" to get the key/value pairs.

Upvotes: 0

aioobe
aioobe

Reputation: 420951

The most flexible way is probably to do it with regular expressions:

import java.util.regex.*;

public class Test {
    public static void main(String[] args) {

        // Create a regular expression pattern
        Pattern spec = Pattern.compile("\\((.*?)=(.*?)\\)");

        // Get a matcher for the searchFilter
        String searchFilter = "(first=sam*)(last=joy*)";
        Matcher m = spec.matcher(searchFilter);

        // While a "abc=xyz" pattern can be found...
        while (m.find())
            // ...print "abc" equals "xyz"
            System.out.println("\""+m.group(1)+"\" equals \""+m.group(2)+"\"");
    }
}

Output:

"first" equals "sam*"
"last" equals "joy*"

Upvotes: 9

MAS1
MAS1

Reputation: 1711

you can do this using split or substring or using StringTokenizer.

Upvotes: 1

fish
fish

Reputation: 1050

Take a look at String.split(..) and String.substring(..), using them you should be able to achieve what you are looking for.

Upvotes: 1

Related Questions