从长字符串中获取分隔符以进行拆分

时间:2013-07-04 17:45:20

标签: c#

有长字符串分隔符。分隔符可以更改,但有一些固定的设置。我想提取分隔符以执行拆分操作。

String  sLongName = "abc1234646;dfsdfsdfsdf44654654;asdfsdsdf;sadfsdfs446";

分隔符集合为{";" "," "/" "$"}

那么如何在运行时获取分隔符,在上面的集合中使用哪个分隔符来分隔字符串

4 个答案:

答案 0 :(得分:4)

您的意思是找到哪个分隔符出现在字符串中?

char[] delimiters = new char[] { ';', ',', '/', '$' };
char? usedDelimiter = delimiters.FirstOrDefault(d => sLongName.IndexOf(d) != -1);

假设字符串只包含一个(或没有)分隔符,您可以随后使用以下分割:

string[] splitString;
if (usedDelimiter != null)
    splitString = sLongName.Split(usedDelimiter.Value);
else
    splitString = new string[] { sLongName };

答案 1 :(得分:2)

您可以拆分所有分隔符:

char[] delimiters = new char[] { ';',',','/','$' };
string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

是否有理由不能将所有这些分开?

var fields = sLongName.Split(new string[] { ";", ",", "/", "$"});

答案 3 :(得分:0)

假设分隔符从未在“普通”文本中使用,您可以

Char[] dels = new Char [] {';', ',', '/', '$'};
Char del='\0';
foreach (Char c in dels)
   if (sLongName.IndexOf(c)>=0)
   {
      del=c;
      break;
   }
if (del=='\0') throw new InvalidOperationException("I'm afraid, I can't do this, Chris!");
//del is now your delimiter.