Hoq*_*que 3 .net c# arrays string c#-2.0
我有一个动态字符串值,可能包含这样的值
"Apple ,Banana, , , , Mango ,Strawberry , "
Run Code Online (Sandbox Code Playgroud)
我想过滤这个字符串
"Apple,Banana,Mango,Strawberry".
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码,它的工作原理.
有没有更好的方法在C#(.NET 2.0)中实现相同的目标?
/// <summary>
/// Convert "Comma Separated String" to "Comma Separated String"
/// </summary>
/// <param name="strWithComma">String having values separated by comma</param>
/// <returns>String separated with comma</returns>
private String CommaSeparatedString(String strWithComma)
{
String rtn = String.Empty;
List<String> newList= new List<string>();
if (String.IsNullOrEmpty(strWithComma))
{
return rtn;
}
String[] strArray = strWithComma.Split(",".ToCharArray());
if (strArray == null || strArray.Length == 0)
{
return rtn;
}
String tmpStr = String.Empty;
String separator=String.Empty;
foreach (String s in strArray)
{
if (!String.IsNullOrEmpty(s))
{
tmpStr =s.Replace(Environment.NewLine, String.Empty);
tmpStr = tmpStr.Trim();
if (!String.IsNullOrEmpty(tmpStr))
{
newList.Add(tmpStr);
}
}
}
if (newList != null && newList.Count > 0)
{
rtn = String.Join(",", newList.ToArray());
}
return rtn;
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用正则表达式:
string str = @"Apple ,,Banana, , , , Mango ,Strawberry , ";
string result = Regex.Replace(str, @"(\s*,\s*)+", ",").TrimEnd(',');
Run Code Online (Sandbox Code Playgroud)
我相信以下应该可以解决任何.NET版本:
string[] TrimAll( string[] input )
{
var result = new List<string>();
foreach( var s in input )
result.Add( s.Trim() );
}
return result.ToArray();
}
var delimiters = new [] { ",", "\t", Environment.NewLine };
string result = string.Join(",", TrimAll( input.Split( delimiters, StringSplitOptions.RemoveEmptyEntries ) ) );
Run Code Online (Sandbox Code Playgroud)
编辑:更新以处理空格,制表符和换行符.
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |