我有一个模糊的字符串:
foo,bar,c;qual="baz,blurb",d;junk="quux,syzygy"
Run Code Online (Sandbox Code Playgroud)
我想用逗号分割 - 但我需要在引号中忽略逗号.我怎样才能做到这一点?好像正则表达式方法失败了; 我想我可以在看到引号时手动扫描并进入不同的模式,但是使用预先存在的库会更好.(编辑:我想我的意思是已经是JDK的一部分或已经是Apache Commons等常用库的一部分的库.)
上面的字符串应该分成:
foo
bar
c;qual="baz,blurb"
d;junk="quux,syzygy"
Run Code Online (Sandbox Code Playgroud)
注意:这不是CSV文件,它是包含在具有更大整体结构的文件中的单个字符串
我正在编写一个简单的导入应用程序,需要读取CSV文件,在a中显示结果DataGrid并在另一个网格中显示CSV文件的损坏行.例如,显示另一个网格中短于5个值的行.我试着这样做:
StreamReader sr = new StreamReader(FilePath);
importingData = new Account();
string line;
string[] row = new string [5];
while ((line = sr.ReadLine()) != null)
{
row = line.Split(',');
importingData.Add(new Transaction
{
Date = DateTime.Parse(row[0]),
Reference = row[1],
Description = row[2],
Amount = decimal.Parse(row[3]),
Category = (Category)Enum.Parse(typeof(Category), row[4])
});
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,在阵列上操作非常困难.有没有更好的方法来分割价值观?
我有以下逗号分隔的字符串,我需要拆分.问题是某些内容在引号内并包含不应在分割中使用的逗号...
串:
111,222,"33,44,55",666,"77,88","99"
Run Code Online (Sandbox Code Playgroud)
我想要输出:
111
222
33,44,55
666
77,88
99
Run Code Online (Sandbox Code Playgroud)
我试过这个:
(?:,?)((?<=")[^"]+(?=")|[^",]+)
Run Code Online (Sandbox Code Playgroud)
但它读取"77,88","99"之间的逗号作为命中,我得到以下输出:
111
222
33,44,55
666
77,88
,
99
Run Code Online (Sandbox Code Playgroud)
有谁能够帮我?我用完了几个小时...... :) /彼得
我有很多字符串(实际上是SQL代码段),格式如下:
('ABCDEFG', 123542, 'XYZ 99,9')
Run Code Online (Sandbox Code Playgroud)
我需要使用C#拆分此字符串,以获得:
我最初使用的是一个简单的Split(','),但由于最后一个参数中的逗号导致输出中的破坏,我需要使用Regex来获取它.问题是我在正则表达式中仍然相当无趣,我似乎无法破解模式主要是因为在该字符串内部,数字和字母数字参数可能随时存在......
我可以用什么来根据引号之外的每个逗号分割该字符串?干杯
如果我有string这样的话
create myclass "56, 'for the better or worse', 54.781"
Run Code Online (Sandbox Code Playgroud)
如何解析它,结果将是三个字符串"单词",其中包含以下内容:
[0] create
[1] myclass
[2] "56, 'for the better or worse', 54.781"
Run Code Online (Sandbox Code Playgroud)
编辑2:请注意保留引号
起初,我尝试使用string.Split(' '),但我注意到它会使第三个string被打破到其他几个字符串.
我尝试Split通过使用其count参数来限制结果3以解决此问题.对于这种情况是否可以,但是当给定的字符串是
create myclass false "56, 'for the better or worse', 54.781" //or
create myclass "56, 'for the better or worse', 54.781" false
Run Code Online (Sandbox Code Playgroud)
然后拆分失败,因为最后两个单词将合并.
我还创建了类似ReadInBetweenSameDepth获得string在引号之间
这是我的ReadInBetweenSameDepth方法
//Examples:
//[1] (2 + 1) * (5 + 6) will return …Run Code Online (Sandbox Code Playgroud) 我试图将一个字符串拆分成子部分以传递到linq数据库,但我想出了一个问题.该文件是一个.csv文件,所以用逗号分隔它:
1,Ms,Aleshia,Tomkiewicz,14 Taylor St,St.Stephens Ward,Kent,CT2 7PP,01835-703597,atomkiewicz @ hotmail.com.
然而,一些数据包含数据字段中的逗号,如县/地址用逗号分隔,但我不希望它分裂,我希望它将所有数据保存在一起,例如地址:伦敦,温布尔登.
im using this code currently to do the chopping:
public static List<string> ReturnCSVFromWeb(string url)
{
System.Net.WebClient client = new WebClient();
string CSVContent = client.DownloadString(url);
List<string> splitted = new List<string>();
string csvFile = CSVContent;
string[] tempStr;
tempStr = csvFile.Split(',','\n');
foreach (string item in tempStr)
{
if (!string.IsNullOrWhiteSpace(item))
{
splitted.Add(item);
}
}
return splitted;
}
Run Code Online (Sandbox Code Playgroud)