Ashish
Ashish

Reputation: 1

how can I get particular string(sub string ) from a string

I have string like

{Action}{RequestId}{Custom_21_addtion}{custom_22_substration}
{Imapact}{assest}{custom_23_multiplication}.

From this I want only those sub string which contains "custom".

For example from above string I want only

{Custom_21_addtion}{custom_22_substration}{custom_23_multiplication}.

How can I get this?

Upvotes: 0

Views: 85

Answers (4)

Kislay Kishore
Kislay Kishore

Reputation: 154

Another solution:

String inputString = "{Action}{RequestId}{Custom}{Custom_21_addtion}{custom_22_substration}{Imapact}{assest}" ;
String strTokens[] =  inputString.split("\\}");

for(String str: strTokens){
    Pattern pattern = Pattern.compile( "custom", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputString);
    if (matcher.find()) {
        System.out.println("Tag Name:" + str.replace("{",""));
    }  
}

Upvotes: 0

Pphoenix
Pphoenix

Reputation: 1473

You can use a regular expression, looking from {custom to }. It will look like this:

Pattern pattern = Pattern.compile("\\{custom.*?\\}", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputString);

while (matcher.find()) {
    System.out.print(matcher.group());
}

The .* after custom means 0 or more characters after the word "custom", and the question mark limits the regex to as few character as possible, meaning that it will break on the next } that it can find.

Upvotes: 1

ZaoTaoBao
ZaoTaoBao

Reputation: 2615

you can do it sth like this:

StringTokenizer st = new StringTokenizer(yourString, "{");
List<String> llista = new ArrayList<String>():

Pattern pattern = Pattern.compile("(\W|^)custom(\W|$)", Pattern.CASE_INSENSITIVE);

while(st.hasMoreTokens()) {

String string  = st.nextElement();
Matcher matcher = pattern.matcher(string);
if(matcher.find()){
llista.add(string);
}

}

Upvotes: 0

Terje
Terje

Reputation: 1763

If you want an alternative solution without regex:

String a = "{Action}{RequestId}{Custom_21_addtion}{custom_22_substration}{Imapact}{assest}{custom_23_multiplication}";
        String[] b = a.split("}");
        StringBuilder result = new StringBuilder();
        for(String c : b) {
            // if you want case sensitivity, drop the toLowerCase()
            if(c.toLowerCase().contains("custom"))
                result.append(c).append("}");
        }
        System.out.println(result.toString());

Upvotes: 0

Related Questions