为什么在拆分字符串后添加[1]?

时间:2017-01-12 13:40:55

标签: c# arrays

我对我遇到问题的方面发表了评论,我不完全理解为什么必须[1],为什么不能[0],{{ 1}}等我知道[2]会切换名字和姓氏的位置,但我不明白为什么。

这就是文本文件中的行。

  

强尼:笼
  莎拉:约翰松
  鲍勃:乔

[0]

2 个答案:

答案 0 :(得分:4)

考虑文件Jonny:Cage中的第一行。如果您将此文本提供给拆分方法,您将获得一个包含两个值JonnyCage的数组。在C#中,您使用基于0的索引对数组中的值进行求解,因此如果您使用0,则Jonny 1将访问CageCage任何其他值都将导致错误因为该数组中只有两个项目。并且您希望姓氏为1,这是数组中的第二项,因此您需要使用<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApplication1" mc:Ignorable="d" Title="MainWindow" Height="700" Width="700"> <Canvas x:Name="canvas" Background="Transparent" MouseLeftButtonDown="Canvas_MouseLeftButtonDown"> <StackPanel x:Name="sp" Background="Yellow" Width="200" Height="200" Visibility="Hidden" /> </Canvas> </Window> private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Point point = e.GetPosition(canvas); Canvas.SetLeft(sp, point.X - sp.Width / 2); Canvas.SetTop(sp, point.Y - sp.Height / 2); sp.Visibility = Visibility.Visible; }

答案 1 :(得分:0)

Split方法接受一个字符串,并在用分隔符分割时查找字符串的每个部分:

string s = "I am a sample string!I am the second part";
// Let's create an array 
string[] parts = s.Split('!'); // We split s into parts seperated by a '!'
// parts looks like this: ["I am a sample string", "I am the second part"] 
// The '!' is not part of it as it is the seperator.
// parts has the length of 2 -> two strings in an array of strings.
// Arrays have indexes of each element, starting with 0, not 1!
// So accessing the second element in parts is:
Console.WriteLine(parts[1]);
// Your frind just put the call of the second element right behind returning the array:
line.Split(':')[1]
// Split gives us the array and we take its second element -> the last name