如何将字符串生成的子串存储到字符串数组中?
我写的程序是从给定的字符串(包括词本身)每一个可能的子串和这些存储到一个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数组中的一个元素。
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()]);
}
我简化你的代码这一点。这可能有帮助。
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它只给出一个ab,但它应该给a,b,ab – coder101 2015-05-15 14:49:45
我变化不大,也许一些帮助
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;
}
}
谢谢!这个小改变完全奏效! – 2014-08-29 10:40:53
尝试这种方式
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);
尝试到位阵列的使用ArrayList的。数组大小是固定的。如果子字符串大小小于数组,那么生成的子字符串有时可能会溢出,或者某些空格保持空白。数组列表随着大小的增加而动态增长。
与数组列表,一个简单的解决办法是:
公共类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);
}
}
我希望它能帮助。
你想用你的功能实现什么?也许有一个更短的方式 – 2014-08-29 10:18:01
我想将它们存储在数组中的原因是,我可以访问任何子字符串。说,我想从“女人”搜索单词“男人” – 2014-08-29 10:20:03
@KrithikaR String.contains? String.indexOf()...请阅读String库,然后提出问题。这里是你的答案:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html – zubergu 2014-08-29 10:21:45