C# 从指定位置对字符串进行反向计数
这似乎是一个新手问题,但我尝试了一个相反的问题。现在有点困惑,想试试另一个。我有一个要求,已经用C# 从指定位置对字符串进行反向计数,c#,winforms,C#,Winforms,这似乎是一个新手问题,但我尝试了一个相反的问题。现在有点困惑,想试试另一个。我有一个要求,已经用ListBox尝试了以下操作: public Form1() { InitializeComponent(); listBox1.Items.Add("123456 - Hello World 1!"); listBox1.Items.Add("7891011 - Hello World 2!"); } private void button1_Click(object s
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;
但是我更喜欢一种更好的方法,任何想法都会受到欢迎-谢谢。试试这个:
string data = item.ToString();
string msg = data.Substring(0, data.IndexOf('-') - 1);
或者,如果两者都需要,并且如果-
周围的空格是必需的,则可以使用-
作为拆分分隔符(注意空格):
有一个名为string的方法,它将拆分一个或多个字符,并返回所有不同部分的
string[]
在您的示例中:
string input = "7891011 - Hello World 2!";
string[] splitArray = input.Split('-');
//splitArray[0] = "7891011 "
//splitArray[1] = " Hello World 2!"
你可以从那里决定你想要的字符串的哪一部分。您也可以删除每个部分的空白,这样您就有了一个更“纯”的字符串
我做了一把小提琴来演示。试试拆分
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] );
}
}
拆分,在找到分隔符后剪切字符串,然后生成字符串数组,现在您可以使用所有分隔字符串这类问题非常适合 根据字符拆分字符串后。。然后将该字符串生成一个数组。然后,只需调用所需字符串的索引 代码如下:
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!
公共类程序
{
公共静态void Main()
{
var lstOfStrings=新列表();
string stringOne=“123456-你好,世界1!”;
string stringTwo=“7891011-你好,世界2!”;
lstOfStrings.Add(stringOne);
lstofstring.Add(stringTwo);
foreach(字符串中的变量项)
{
var stringSplit=item.Split('-');
/*将项目(在本例中)一分为二,其中字符=“-”…并存储
结果将生成一个名为stringSplit的数组对象*/
var firstHalf=stringSplit[0]。Trim();
/*我想得到这个函数的第一个元素
数组(基于0的索引),然后删除所有空白*/
var secondHalf=stringSplit[1]。Trim();
/*我想得到第二个元素
删除数组(基于0的索引),然后删除所有空白*/
控制台写入线(上半部分);
控制台写入线(第二部分);
}
}
}
//输出:
// 123456
//你好,世界1!
// 7891011
//你好,世界2!
这是一个
使用
.Trim()
删除字符串中的空白。您可以将对象绑定到列表框而不是字符串。这是一种更优雅的方法,也能解决您的问题
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);
}
}
使用
.Split('-')
然后决定第一部分是[0]
还是第二部分是[1]
不是更容易吗?您是否尝试过使用string类的Split()
方法?如果我能把所有的帖子都记下来作为答案那就太好了,但谢谢大家的想法,还有很长的路要走。你比我快把它打印出来了。这绝对是最好的选择,因为你很了解输入。哇,3个人写了相同的答案,其他人也被打败了,包括我。我猜这是一个相当简单的问题。这看起来很棒@Faruq-谢谢。
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);
}
}