有分隔符分隔的长字符串。分隔符可以更改,但有一些固定设置。我想提取分隔符来执行拆分操作。
String sLongName = "abc1234646;dfsdfsdfsdf44654654;asdfsdsdf;sadfsdfs446";
定界符的集合是{";" "," "/" "$"}
。
那么如何在运行时获取分隔符,在上述集合中使用哪个分隔符来分隔字符串
有分隔符分隔的长字符串。分隔符可以更改,但有一些固定设置。我想提取分隔符来执行拆分操作。
String sLongName = "abc1234646;dfsdfsdfsdf44654654;asdfsdsdf;sadfsdfs446";
定界符的集合是{";" "," "/" "$"}
。
那么如何在运行时获取分隔符,在上述集合中使用哪个分隔符来分隔字符串
您的意思是查找字符串中出现的分隔符之一吗?
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 };
您可以拆分所有分隔符:
char[] delimiters = new char[] { ';',',','/','$' };
string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
有没有理由不能对所有这些都进行拆分?
var fields = sLongName.Split(new string[] { ";", ",", "/", "$"});
假设在“普通”文本中从未使用过分隔符,您可以
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.