我正在从Visual Basic切换到c#。在我的项目中,我将它拆分了几次,其中一个单词是一个单词。这是我的VB代码:
Dim Item As String() = New String() {TXTItem1.Text + "-"}
If Foods.Contains(TXTItem1.Text) Then
Dim Substring As String = Foods.Split(Item, StringSplitOptions.None)(1)
Dim SPValue As String = Substring.Split(vbNewLine)(0)
MsgBox(SPValue)
现在这是我的C#代码:
string[] Item = new string[] {TXTSearchItem.Text + "-"};
if (Foods.Contains(TXTSearchItem.Text))
{
string Substring = Foods.Split(Item, StringSplitOptions.None)[1];
MessageBox.Show(Substring);
由于某种原因,我无法再次拆分,MessageBox
甚至没有显示。有什么帮助吗?谢谢!
答案 0 :(得分:0)
什么是食品对象?那是数组还是字符串?
如果我没记错的话,我相信对字符串的Split扩展方法会创建String类型的Array而不是String。
由于Substring被声明为String而不是Array,因此MessageBox.Show方法可能仅将String数组显示为对象,或者无法正确编译。
*编辑。
这是您要寻找的吗?这只会显示在MessageBox.Show方法中的项目字符串数组之后出现的信息。
string[] Item = new string[] { TXTSearchItem.Text + "-" };
if (Foods.ToLower().Contains(TXTSearchItem.Text.ToLower()))
{
string Substring = Foods.Split(Item, StringSplitOptions.None)[1];
MessageBox.Show(Substring);
}
答案 1 :(得分:0)
而不是使用string.Split,如何搜索只是在寻找什么?可能更简单:
const string foods = "Banana-21\r\nEggs-123\r\n";
const string item = "banana";
var startIndex = foods.IndexOf(item + "-", StringComparison.CurrentCultureIgnoreCase);
var dashIndex = foods.IndexOf("-", startIndex);
var endIndex = foods.IndexOf("\r\n", startIndex);
var foodName = foods.Substring(startIndex, dashIndex - startIndex);
var footCount = foods.Substring(dashIndex + 1, endIndex - dashIndex - 1);
MessageBox.Show($"[{foodName}]: {footCount}");
但是,如果您真的想使用string.Split,这是一个示例(做类似的事情):
const string foods = "Banana-21\r\nEggs-123\r\nCandy-1\r\n";
var foodItems = new Dictionary<string, int>();
var records = foods.Split(new[]{ "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var foodRecord in records)
{
var parts = foodRecord.Split(new[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
if (!int.TryParse(parts[1], out var foodCount))
{
foodCount = 0;
}
foodItems.Add(parts[0], foodCount);
}
该代码运行后,您最终得到包含以下内容的foodItems:
[0] {[Banana, 21]}
[1] {[Eggs, 123]}
[2] {[Candy, 1]}
就其价值而言,(至少对我而言)首先在行末端进行分割,然后再对每一行(或仅对您感兴趣的行)进行分割,这是更有意义的。