【问题标题】:How can I store substrings generated from a String into a String array?如何将字符串生成的子字符串存储到字符串数组中?
【发布时间】:2014-08-29 10:16:45
【问题描述】:

我正在编写的程序是从给定字符串(包括单词本身)生成每个可能的子字符串,并将它们存储到 String 数组中

这是我的代码:

String word = "WOMAN";
String[] res = new String[20];
String sub;
int i, j, k;
int len = word.length();
for(i = 0; i < len; i++)
{
    for(j = 0; j <= len-i; j++)
    {
        sub = word.substring(i, i+j);
        for(k = 0; k < res.length; k++)
            res[k] = sub;
    }
}

我收到一条错误消息 - error: incompatible types: String[] cannot be converted to String。我究竟做错了什么?!我想将每个子字符串作为一个元素存储在 res 数组中。

【问题讨论】:

  • 你想用你的函数实现什么?也许还有更短的方法
  • 我想将它们存储在一个数组中的原因是我可以访问任何子字符串。说,我想从“WOMAN”中搜索“MAN”这个词
  • @KrithikaR String.contains? String.indexOf()... 请阅读 String 库,然后提出问题。以下是你所有的答案:docs.oracle.com/javase/7/docs/api/java/lang/String.html
  • sen.substring(i, i+j); 森是什么?
  • 你能给我们看一个完整的例子吗?

标签: java arrays string substring


【解决方案1】:
public static String[] getSubStrings(String string){
      List<String> result = new ArrayList<String>();
      int i, c, length;
      length = string.length();   
      for( c = 0 ; c < length ; c++ )
      {
         for( i = 1 ; i <= length - c ; i++ )
         {
            result.add(string.substring(c, c+i));
         }
      }
      return result.toArray(new String[result.size()]);
}

【讨论】:

    【解决方案2】:

    我改变一点也许是为了一些帮助

        String word = "WOMAN";
        String[] res = new String[20];
        String sub;
        int i, j, k=0;
        int len = word.length();
        for(i = 0;i < len;i++)
        {
                for(j = 0;j <= len-i;j++,k++)
                {
                    sub = word.substring(i, i+j);
                    //for(k = 0;k < res.length;k++)
                        res[k] = sub;
                }
        }
    

    【讨论】:

      【解决方案3】:

      试试这个方法

      String word = "WOMAN";
      String sub = "";
      int len = word.length();
      List  list = new ArrayList();
      for(int i = 0; i < len; i++)
      {
          for(int j = 1; j <=len-i; j++)
          {
              sub = word.substring(i, i+j);
              list.add(sub);
          }
      
      }
      System.out.println(list);
      

      【讨论】:

        【解决方案4】:

        尝试使用 ArrayList 代替 array 。数组大小是固定的。因此,如果子字符串大小小于数组,则生成的子字符串有时会溢出或某些空格保持空白。数组列表随着大小的增加而动态增长。

        使用数组列表,一种简单的解决方案是:

        公共类 GenerateStrings {

        /**
         * Generate substrings of a given string and add them in an arraylist.
         */
        public static void main(String[] args) {
            ArrayList<String> aList=new ArrayList<String>();
            Scanner sc = new Scanner(System.in);
            System.out.println("enter the string to split");
            String string=sc.nextLine();
            for(int i=0;i<string.length();i++){
                for(int j=1;j<=string.length()-i;j++){
                    String subString=string.substring(i, i+j);
                    aList.add(subString);
        
                }
            }
            System.out.println(aList);
        }
        

        }

        我希望它有所帮助。

        【讨论】:

          【解决方案5】:

          我将您的代码简化为这个。这可能会有所帮助。

          String str = "WOMAN";
          
          List<String> tempArr = new ArrayList<String>();
          
          for (int i = 1; i < str.length(); i++) {
              for (int j = i; j <= str.length(); j++) {
                  tempArr.add(str.substring(i - 1, j));
              }
          }
          
          String[] res = tempArr.toArray(new String[tempArr.size()]); 
          

          【讨论】:

          • 对于一个字符串 ab 它只给出 a , ab 但它应该给出 a , b , ab
          猜你喜欢
          • 2019-11-23
          • 2015-05-14
          • 2011-12-02
          • 2019-07-02
          • 1970-01-01
          • 2021-03-28
          • 1970-01-01
          • 2020-09-20
          • 1970-01-01
          相关资源
          最近更新 更多