Mac
Mac

Reputation: 1163

How to get multiple substrings from string in Android/Java ?

I need some help to extract multiple substrings from a string. An example of a string is as given below:

String str = "What is <Mytag a exp 5 exp 3> written as a single power of <i>a</i> <Mytag yx4> and the double power of <b>x+y</b> <Mytag 3xy4>";

I am trying to get substrings Between "<Mytag" and ">"

so my desire output will be
1) a exp 5 exp 3
2) yx4
3) 3xy4

I have tried with Scanner and substring everything I getting first string successfully but the problem with getting second and third occurrence.

in substring methods I am successfully getting index of all tages "<Mytag" but not able to get correct index of ">" because it comes with Bold and italic also.

Upvotes: 3

Views: 4548

Answers (2)

rendon
rendon

Reputation: 2363

As Rohit Jain said, with regular expressions. Here is functional code:

// import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexTestHarness {

  public static void main(String[] args){
    // Console console = System.console();  // Not needed

    Pattern pattern = Pattern.compile("<Mytag([^>]*)>");

    String myString = "What is <Mytag a exp 5 exp 3> written as a single power of <i>a</i> <Mytag yx4> and the double power of <b>x+y</b> <Mytag 3xy4>";
    Matcher matcher = pattern.matcher(myString);

    while (matcher.find()) {
      // Rohit Jain observation
      System.out.println(matcher.group(1));
    }

  }
}

Source: Java Regex tutorial.

Upvotes: 3

Rohit Jain
Rohit Jain

Reputation: 213203

Use Regex for that: -

"<Mytag ([^>]*)>"

And get the group 1 from the above regex. You need to use it with Pattern and Matcher class, and use Matcher#find method with a while loop to find all the matching substrings.

Upvotes: 4

Related Questions