1、怎么将一个不确定长度的字符串存入数组
求助:1、如何将一个不确定长度的字符串存入数组?
7-1:输入一个字符串,统计其中有多少个单词?单词之间用空格分隔开。
答:代码如下:
namespace 书本练习题
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个字符串:");
string strWord = Console.ReadLine();
int countWord = 0;
char[] splitstr = { ' ','!','#' };
string[] strArray = new string[100];
strArray = strWord.Split(splitstr);
for (int i = 0; i < strArray.Length; i++)
{
countWord++;
}
Console.WriteLine("你输入的字符串包含{0}个单词!", countWord);
for (int i = 0; i < strArray.Length; i++)
{
Console.WriteLine("{0}", strArray[i]);
}
Console.WriteLine("你输入的字符串包含{0}个单词!!", strArray.Length);
Console.ReadKey();
}
}
}
没有完成的内容:1、含标点符号的语句,结尾会增加一个空字符,如何去掉?
2、如何将一个字符串存入数组,字符串长度不确定。
求助的主要困惑:如何将一个不确定的字符串存入数组?
如:本题中输入一个字符串,如何把这个字符串存入数组?而不是用事先定义了一个长度为100的数组(string [] strArray=new string[100];)
请各位高手大侠不吝赐教。谢谢!
------解决思路----------------------
直接对字符串空格分割,就可以把每个单词单独存放起来,然后进行相应的处理,List集合接收。至于你说的结尾会增加一个空字符,直接单独移除就好
------解决思路----------------------
这种代码写出来真的不觉得有问题吗
另外
可以合写成一行:
你实现定义的固定长度数组在下一行代码执行后立刻变成了垃圾
关于你的第一个问题,你可以使用String.Split的带StringSplitOptions参数的重载,写成这样:
这样数组里就不会包含空字符串了
------解决思路----------------------
用List<string>,它可以不断追加元素进去。
最后如果你需要数组,调用下ToArray()即可。
------解决思路----------------------
关于可变长度数组,前面已经说了很多
后面多了空字符的问题,说明字符串最后多了个空格呗,用TrimEnd先把最后的空格去掉,再Split
------解决思路----------------------
如果还没学到LIST的话可以这样改
string[] strArray = new string[];
strArray = strWord.Split(splitstr);
就是不固定的数组
2使用替换字符函数试看
------解决思路----------------------
string[] strArray = new string[];
strArray = strWord.Split(splitstr);
这样
string[] strArray;
strArray = strWord.Split(splitstr);
或这样
string[] strArray = strWord.Split(splitstr);
就可以了
Split本来就是返回一个新的数组
------解决思路----------------------
按LZ的写法
这行 string[] strArray = new string[100]; 不用事先写死长度
直接这样就行
string[] strArray = strWord.Split(splitstr);
7-1:输入一个字符串,统计其中有多少个单词?单词之间用空格分隔开。
答:代码如下:
namespace 书本练习题
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入一个字符串:");
string strWord = Console.ReadLine();
int countWord = 0;
char[] splitstr = { ' ','!','#' };
string[] strArray = new string[100];
strArray = strWord.Split(splitstr);
for (int i = 0; i < strArray.Length; i++)
{
countWord++;
}
Console.WriteLine("你输入的字符串包含{0}个单词!", countWord);
for (int i = 0; i < strArray.Length; i++)
{
Console.WriteLine("{0}", strArray[i]);
}
Console.WriteLine("你输入的字符串包含{0}个单词!!", strArray.Length);
Console.ReadKey();
}
}
}
没有完成的内容:1、含标点符号的语句,结尾会增加一个空字符,如何去掉?
2、如何将一个字符串存入数组,字符串长度不确定。
求助的主要困惑:如何将一个不确定的字符串存入数组?
如:本题中输入一个字符串,如何把这个字符串存入数组?而不是用事先定义了一个长度为100的数组(string [] strArray=new string[100];)
请各位高手大侠不吝赐教。谢谢!
------解决思路----------------------
直接对字符串空格分割,就可以把每个单词单独存放起来,然后进行相应的处理,List集合接收。至于你说的结尾会增加一个空字符,直接单独移除就好
------解决思路----------------------
for (int i = 0; i < strArray.Length; i++)
{
countWord++;
}
这种代码写出来真的不觉得有问题吗
另外
string[] strArray = new string[100];
strArray = strWord.Split(splitstr);
可以合写成一行:
string[] strArray = strWord.Split(splitstr);
你实现定义的固定长度数组在下一行代码执行后立刻变成了垃圾
关于你的第一个问题,你可以使用String.Split的带StringSplitOptions参数的重载,写成这样:
string[] strArray = strWord.Split(splitstr, StringSplitOptions.RemoveEmptyEntries);
这样数组里就不会包含空字符串了
------解决思路----------------------
用List<string>,它可以不断追加元素进去。
最后如果你需要数组,调用下ToArray()即可。
------解决思路----------------------
关于可变长度数组,前面已经说了很多
后面多了空字符的问题,说明字符串最后多了个空格呗,用TrimEnd先把最后的空格去掉,再Split
------解决思路----------------------
如果还没学到LIST的话可以这样改
string[] strArray = new string[];
strArray = strWord.Split(splitstr);
就是不固定的数组
2使用替换字符函数试看
------解决思路----------------------
string[] strArray = new string[];
strArray = strWord.Split(splitstr);
这样
string[] strArray;
strArray = strWord.Split(splitstr);
或这样
string[] strArray = strWord.Split(splitstr);
就可以了
Split本来就是返回一个新的数组
------解决思路----------------------
按LZ的写法
这行 string[] strArray = new string[100]; 不用事先写死长度
直接这样就行
string[] strArray = strWord.Split(splitstr);