我正在尝试编写用于从字符串中拆分第一个char的代码,如:
输入= This Is Stackoverflow
输出(我想要的)= TIS
但我得到了Unhandheld Exception: System.Indexoutofbound exception: Index was outside the bound of array
//我的代码是
using System;
public class n2
{
public static void Main(String[] args)
{
String s1;
Console.WriteLine("Enter the string");
s1=Console.ReadLine();
Console.WriteLine(s1);
char[] charArr=s1.ToCharArray();
for(int i=0;i<s1.Length;i++)
{
Console.WriteLine(charArr[i]);
}
Console.WriteLine(s1.Length);
char[] n1= new char[s1.Length];
n1[0]=charArr[0];
for(int j=1;j<s1.Length-1;j++)
{
if(charArr[j]==' ')
{
for(int k=1;k<10;k++)
{
n1[k]=charArr[++j];
}
}
}
for(int i=0;i<10;i++)
{
Console.Write(n1[i]);
}
}
}
我不知道错误,请提供建议。 提前谢谢....
答案 0 :(得分:0)
您的代码中存在问题n1[k]=charArr[++j];
您需要在j
子句中的charArr[++j]
之前检查if
的值。如下,
if(j<s1.Length-1)
{
n1[k]=charArr[j++]; //doing post increment!
}
答案 1 :(得分:0)
错误的直接原因在于
n1[k]=charArr[++j];
然而,正则表达式和 Linq 似乎是一种更好的方法:
String source = "This Is Stackoverflow";
// "TIS"
String result = String.Join("", Regex
.Matches(source, @"(^| )\w")
.OfType<Match>()
.Select(m => m.Value.Trim()));