C# 字符串分割分隔符

C# 字符串分割分隔符,c#,C#,是否可以使用String.Split而不从字符串中剪切分隔符 例如,我有字符串 convertSource = "http://www.domain.com http://www.domain1.com"; 我想构建数组并使用下面的代码 convertSource.Split(new[] { " http" }, StringSplitOptions.RemoveEmptyEntries) 我得到这样的数组 [1] http://www.domain.com [2] ://www.domai

是否可以使用String.Split而不从字符串中剪切分隔符

例如,我有字符串

convertSource = "http://www.domain.com http://www.domain1.com";
我想构建数组并使用下面的代码

convertSource.Split(new[] { " http" }, StringSplitOptions.RemoveEmptyEntries)
我得到这样的数组

[1] http://www.domain.com
[2] ://www.domain1.com

我想保留http,它似乎是字符串。不仅拆分单独的字符串,而且还切断分隔符。

这是因为您使用
“http”
作为分隔符

试试这个:

string separator = " ";
convertSource.Split(separator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
Split方法的工作方式是,当它涉及到您提供的分隔符时,它会立即将其切断,并从字符串中删除分隔符


根据您所说的,您要做的是分割字符串,保留分隔符,然后如果您只想从字符串中删除前导空格或尾随空格,那么我建议您使用
.Trim()
方法:
convertSource.Trim()

这是对正则表达式的一种强烈要求:

Regex regEx = new Regex(@"((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)");
Match match= regEx.Match("http://www.domain.com http://www.domain1.com");

IList<string> values = new List<string>();
while (match.Success)
{
     values.Add(match.Value);
     match = match.NextMatch();
}
Regex Regex=newregex(@“((mailto\:|)(news\(htf)tp(s?)\:/){1}\s+);
Match=regEx.Match(“http://www.domain.com http://www.domain1.com");
IList值=新列表();
while(匹配成功)
{
values.Add(match.Value);
match=match.NextMatch();
}

但是您应该按空格“”而不是按http拆分,这样有帮助吗?如果URL本身包含“http”怎么办?像
http://www.http.com/
。您应该首先定义明确的规则来限制可以输入的内容。@DavidePiras我不能按空格分割,因为URL可能包含空格。另外,可能与此重复:URL中的任何空格都应该编码,而不是新的[]{”“}我想您可以使用“”我不能按空间分割,因为URL可能包含spaces@DavidePiras您必须包含新的[]{”“},因为仅使用“”将导致编译错误。找不到这样的方法…是否可以强制对URL进行编码(例如,使用%20而不是空格)?是。使用HttpUtility.UrlPathEncode()编码,然后使用“”拆分。
string[] array = Regex.Split(convertSource, @"(?=http://)");