删除部分字符串的最佳方法是什么? (C#)

时间:2010-03-10 17:07:42

标签: c# string split

我循环遍历数组,其中有一个字符串,如下例所示:“1001 - 某些成分”。

现在,当我遍历数组时,我得到整个字符串

string ingCode = theData[i + 1];

但我真正需要的只是“1001”而不是整个shibang。

6 个答案:

答案 0 :(得分:9)

结合列出的其他一些方法以获取第一部分或代码

string myString = "1001--Some ingredient";
string myPortionOfString = myString.Substring(0, myString.IndexOf("--"));

这使您可以处理比4个字符更长(或更短)的成分代码。

如果分隔符发生更改但所需信息始终为数字,则使用正则表达式解析数字。

答案 1 :(得分:3)

您可以使用SubString方法:

    string myString = "1001--Some ingredient";
    string myPortionOfString = myString.Substring(0, 4);
    Console.WriteLine(myPortionOfString);

控制台输出是:

1001

你有没有提到这个?

修改

在看到评论之后,如果您不确切地知道“ - ”之前有多少数字,那么最好的答案是 @Rob Allen 提出的答案。我给他+1。

//...
string myPortionOfString = myString.Substring(0, myString.IndexOf("--"));
//...

答案 2 :(得分:3)

如果分隔符始终为“ - ”,则可以给出一个镜头:

string ingCode = theData[i+1].Split('-')[0];

如果您始终对字符串开头的数字感兴趣,请尝试使用RegEx:

string ingCode = System.Text.RegularExpressions.Regex.Match(theData[i+1], @"^([0-9]*)").ToString();

答案 3 :(得分:2)

您可以使用正则表达式:

Regex rgx = new Regex(@"(?<Code>\d+)--(?<Ingedient>\w+)", RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches("1001--Some Ingredient");
foreach(Match match in matches)
    Console.WriteLine("Code:{0}, Ingredient:{1}",match.Groups["Code"], match.Groups["Ingredient"]);

答案 4 :(得分:1)

可以通过几种不同的方式完成,具体取决于您对数据外观的了解。

假设我们一直在寻找前4个字符:

string ingCode = theData[i + 1].Substring(0, 4);

假设我们正在寻找“ - ”之前的所有内容:

string ingCode = theData[i + 1].Split(new string[] {"--"}, StringSplitOptions.None)[0];

假设我们在字符串的开头寻找一个或多个数字:

string ingCode = Regex.Match(theData[i + 1], @"^\d+").Captures[0];

答案 5 :(得分:0)

您可以使用StringBuilder类或只是通过在[0],[1],[2],[3]处附加索引来创建新字符串(在您总是需要前4个字符的情况下)。 您还可以创建左功能:

Console.Writeline(Left(myString, 4));

public static string Left(string param, int length)        
{        
string result = param.Substring(0, length);             
return result;        
} 

您可以做的另一件事是创建一个字符串扩展方法:

static class StringExtensions
 {
  public static String Left(this string str, int numbOfChars)
   {
    if(str.Length <= numbOfChars) return str;
    return str.Substring(0, numbOfChars);
   }

  public static String Right(this string str, int numbOfChars)
    {
      if numbOfChars >= str.Length) return str;
      return str.Substring(str.Length, str.Length-numbOfChars);
    }
 }

您可以这样称呼:

String test = "Hello World";
String str = test.Left(3); //returns Hel