我正在使用c#。我有一个字符串“ 1,2-Benzene-d4”,36925,10.483,0.95,
预期的字符串数组为
str[0] = "1,2-Benzene-d4"
str[1] = 36925
str[2] = 10.483
str[3] = 0.95
str[4] =
我尝试使用以下函数实现拆分,其中mystring是输入字符串定界符为(,)
public static string[] SplitDelimitedText(string myString, string delimiter, out int numberOfFields)
{
string strDelimiter = "\"" + delimiter;
string[] strSeperator = null;
//string[] arrayOfFields = new string[numberOfFields+1];
List<string> arrayOfFields = new List<string>();
try
{
if (!string.IsNullOrEmpty(myString))
{
if (myString.StartsWith("\""))
{
strSeperator = new string[1];
strSeperator[0] = strDelimiter;
}
else
{
strSeperator = new string[2];
strSeperator[0] = strDelimiter;
strSeperator[1] = delimiter;
}
string[] arrayOfSplitString = myString.Split(strSeperator, StringSplitOptions.None);
arrayOfFields.Add("");
for (int iCount = 0; iCount < arrayOfSplitString.Length; iCount++)
{
arrayOfFields.Add(arrayOfSplitString[iCount].Replace("\"", "").Trim());
}
numberOfFields = arrayOfSplitString.Length;
}
else
numberOfFields = 0;
}
catch
{
throw;
}
return arrayOfFields.ToArray();
}
答案 0 :(得分:1)
如注释中所述,您可以通过在构造函数中传递字符串来使用TextFieldParser类。
另一种方法是使用正则表达式来解决它。这是一个示例:
navController.navigate(directions)
答案 1 :(得分:1)
正则表达式是必经之路。试试这个NetFiddle
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var input ="\"1,2-Benzene-d4\",36925,10.483,0.95,,";
//Define pattern
Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
//Separating columns to array
string[] X = CSVParser.Split(input);
for (int i=0;i<X.Length;i++)
Console.WriteLine("{0}: {1}\n",i,X[i]);
}
}