Copy the first N words in a string in java

2019-09-20 06:27发布

I want to select the first N words of a text string. I have tried split() and substring() to no avail. What I want is to select the first 3 words of the following prayer and copy them to another variable.

For example if I have a string:

String greeting = "Hello this is just an example"

I want to get into the variable Z the first 3 words so that

Z = "Hello this is"

5条回答
Rolldiameter
2楼-- · 2019-09-20 06:39
    String myString = "Copying first N numbers of words to a string";
    String [] arr = myString.split("\\s+"); 
         //Splits words & assign to the arr[]  ex : arr[0] -> Copying ,arr[1] -> first


        int N=3; // NUMBER OF WORDS THAT YOU NEED
        String nWords="";

        // concatenating number of words that you required
        for(int i=0; i<N ; i++){
             nWords = nWords + " " + arr[i] ;         
        }

    System.out.println(nWords);



NOTE : Here .split() function returns an array of strings computed by splitting a given string around matches of the given regular expression

so if i write the code like follows

String myString = "1234M567M98723651";
String[] arr = myString.split("M"); //idea : split the words if 'M' presents

then answers will be :
1234 and 567 where stored into an array.

This is doing by storing the split values into the given array. first split value store to arr[0], second goes to arr[1].

Later part of the code is for concatenating the required number of split words

Hope that you can get an idea from this!!!
Thank you!

查看更多
爱情/是我丢掉的垃圾
3楼-- · 2019-09-20 06:47

Add this in a utility class, such as Util.java

public static String getFirstNWords(String s, int n) {
    if (s == null) return null;
    String [] sArr = s.split("\\s+");
    if (n >= sArr.length)
        return s;

    String firstN = "";

    for (int i=0; i<n-1; i++) {
        firstN += sArr[i] + " ";
    }
    firstN += sArr[n-1];
    return firstN;
}

Usage: Util.getFirstNWords("This will give you the first N words", 3); ----> "This will give"

查看更多
beautiful°
4楼-- · 2019-09-20 06:55

If you use Apache Commons Lang3, you can make it a little shorter like this:

public String firstNWords(String input, int numOfWords) {
    String[] tokens = input.split(" ");
    tokens = ArrayUtils.subarray(tokens, 0, numOfWords);
    return StringUtils.join(tokens, ' ');
}
查看更多
Melony?
5楼-- · 2019-09-20 07:00

You could try something like:

String greeting = "Hello this is just an example";
int end = 0;
for (int i=0; i<3; i++) {
    end = greeting.indexOf(' ', end) + 1;
}
String Z = greeting.substring(0, end - 1);

N.B. This assumes there are at least three space characters in your source string. Any less and this code will probably fail.

查看更多
Fickle 薄情
6楼-- · 2019-09-20 07:02
public String getFirstNStrings(String str, int n) {
    String[] sArr = str.split(" ");
    String firstStrs = "";
    for(int i = 0; i < n; i++)
        firstStrs += sArr[i] + " ";
    return firstStrs.trim();
}

Now getFirstNStrings("Hello this is just an example", 3); will output:

Hello this is

查看更多
登录 后发表回答