使用Java从方法返回子字符串

时间:2018-07-29 01:31:07

标签: java string

有没有一种方法可以从java中的字符串返回子字符串? 例如,如果我有一个字符串:aadaa 它应该返回我:{a,a,d,a,a,aa,ad,aa,aad,ada,daa ..} 这是我的代码:

String substring(String str1)
{ 
    //String sbs="";
    int len=str1.length();

    for (int i=0;i<len;i++)
    {
        for (int j=i+1;j<=len;j++)
        {
            return(str1.substring(i, j));

        }

    }

我需要return语句从此方法返回一个值,而不是将其打印出来。 请帮忙。

2 个答案:

答案 0 :(得分:2)

要使用Java获取给定String的所有子字符串,可以使用以下GetSubtrings方法:

public static ArrayList<String> GetSubstrings(String str) {

    // set up any substring and add it to the ArrayList
    ArrayList<String> subStrings = new ArrayList();
    for (int i = 0; i < str.length(); ++i) {
        for (int j = 1; j <= str.length() - i; ++j) {
            subStrings.add(str.substring(i, i + j));
        }
    }

    return subStrings;
}

有关如何使用它的示例为:

// stores all substrings
ArrayList<String> subStrings = new ArrayList();

// call method to get all substrings
subStrings = GetSubstrings("Test");

这将返回一个包含以下内容的ArrayList:{“ T”,“ Te”,“ Tes”,“ Test”,“ e”,“ es”,“ est”,“ s”,“ st”,“ t “}

整个示例程序:

package com.company;

import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        // stores all substrings
        ArrayList<String> subStrings = new ArrayList();

        // call method to get all substrings
        subStrings = GetSubstrings("Test");
    }    

    public static ArrayList<String> GetSubstrings(String str) {

        // set up any substring and add it to the ArrayList
        ArrayList<String> subStrings = new ArrayList();
        for (int i = 0; i < str.length(); ++i) {
            for (int j = 1; j <= str.length() - i; ++j) {
                subStrings.add(str.substring(i, i + j));
            }
        }

        return subStrings;
    }
}

答案 1 :(得分:1)

作为 oRole 的答案,如果您不想重复的值,只需将List更改为HashSet。由于Java设置不包含重复的值。

public static HashSet<String> GetSubstrings(String str) {

    // set up any substring and add it to the ArrayList
    HashSet<String> subStrings = new HashSet();
    for (int i = 0; i < str.length(); ++i) {
        for (int j = 1; j <= str.length() - i; ++j) {
            subStrings.add(str.substring(i, i + j));
        }
    }

    return subStrings;
}