这似乎是一个新手问题,但我尝试过反向问题。现在有点困惑尝试另一个。我有一项要求,已经使用ListBox
尝试了以下内容:
public Form1()
{
InitializeComponent();
listBox1.Items.Add("123456 - Hello World 1!");
listBox1.Items.Add("7891011 - Hello World 2!");
}
private void button1_Click(object sender, EventArgs e)
{
foreach(var item in listBox1.SelectedItems)
{
int i = item.ToString().IndexOf('-') + 1;
string msg = item.ToString().Substring(i);
MessageBox.Show(msg);
}
}
点击按钮,它会返回以下结果我的意思是( - )符号后的字词:
Hello World 2!
现在我想尝试另一个应该返回以下内容:
7891011
我可以这样做 -
item.ToString().IndexOf('-') - 6;
但是更愿意采用更好的方式去做,任何想法都会受到赞赏 - 谢谢。
答案 0 :(得分:3)
试试这个:
string data = item.ToString();
string msg = data.Substring(0, data.IndexOf('-') - 1);
或者,如果您需要两者,并且-
周围的空格是必需的,那么您可以使用-
作为拆分分隔符(请注意空格):
string[] parts = item.ToString().Split(new[] {" - "}, StringSplitOptions.None);
string msg1 = parts[0];
string msg2 = parts[1];
答案 1 :(得分:3)
有一个名为Split()
的字符串方法,它将在字符或字符串上拆分并返回所有不同部分的string[]
。
在你的例子中:
string input = "7891011 - Hello World 2!";
string[] splitArray = input.Split('-');
//splitArray[0] = "7891011 "
//splitArray[1] = " Hello World 2!"
您可以从那里决定所需字符串的“部分”。您也可以Trim()
每个部分的空格,这样您就可以拥有更“纯粹”的字符串。
我做了一个小提琴here来演示。
答案 2 :(得分:1)
尝试拆分
private void button1_Click( object sender, EventArgs e )
{
foreach (string item in listBox1.SelectedItems)
{
string[] values = item.ToString().Split('-');
MessageBox.Show( values[0] );
MessageBox.Show( values[1] );
}
}
拆分,找到分隔符字符时剪切字符串,然后生成字符串数组,现在可以使用所有分隔字符串
答案 3 :(得分:1)
此类问题非常适合String.Split。
根据字符分割字符串后,字符串将变为数组。然后,只需调用所需字符串的索引。
以下是代码:
public class Program
{
public static void Main()
{
var lstOfStrings = new List<string>();
string stringOne = "123456 - Hello World 1!";
string stringTwo = "7891011 - Hello World 2!";
lstOfStrings.Add(stringOne);
lstOfStrings.Add(stringTwo);
foreach(var item in lstOfStrings)
{
var stringSplit = item.Split('-');
/* split the item (in this case) in half where the character = '-'.. and store
the result in an array object called stringSplit */
var firstHalf = stringSplit[0].Trim();
/* I want to get the 1st element of the
array (0 based indexing) and then remove all of the white space */
var secondHalf = stringSplit[1].Trim();
/* I want to get the 2nd element of
the array (0 based indexing) and then remove all of the white space */
Console.WriteLine(firstHalf);
Console.WriteLine(secondHalf);
}
}
}
// Output:
// 123456
// Hello World 1!
// 7891011
// Hello World 2!
使用.Trim()
从字符串中删除空格。
答案 4 :(得分:1)
您可以将对象绑定到ListBox而不是字符串。这是更优雅的方法,也可以解决您的问题。
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add(new { Id = "123456", Text = "123456 - Hello World 1!" });
listBox1.Items.Add(new { Id = "7891011", Text = "123456 - Hello World 2!" });
listBox1.DisplayMember = "Text";
}
private void button1_Click(object sender, EventArgs e)
{
foreach (dynamic item in listBox1.SelectedItems)
{
MessageBox.Show(item.Id);
}
}