【问题标题】:Split stringurl in c# [closed]在c#中拆分stringurl [关闭]
【发布时间】:2019-09-09 05:40:16
【问题描述】:

谁能帮我解决这个问题?我有一个包含多个 URL 的字符串 如何将这些 URL 拆分成一个string 数组?

string urls = "https://stackoverflow.com/questions/ask.csvhttps://stackoverflow.com/questions/ask1.csvhttps://stackoverflow.com/questions/ask3.csv"

【问题讨论】:

  • 您自己尝试过什么吗?您在拆分字符串方面进行了哪些研究(我假设您已经完成了)?为什么它不适用于您的情况?为什么您的 URL 存储为没有分隔符的单个字符串?
  • 这就是从第三方服务获取字符串的方法。如果有分隔符,我会使用 Split 方法。
  • ...我的其他问题的答案是什么?
  • @Axya 使用 https:// 拆分并再次在每个项目前加上 https://。
  • 我认为您需要说明为什么您不能接受在https:// 上拆分然后将其重新添加.. 作为解决方案我完全没问题,而且比拆分更好在 .csv 上(可能更合理地出现在 url 的其他部分,该方案肯定只出现在开头)

标签: c# arrays regex string


【解决方案1】:

试试:

var urlsArray = urls.Split("http").Select(i => "http" + i).ToArray();

为了完整起见,您可以使用正则表达式:

  var urls = "https://stackoverflow.com/questions/ask.csvhttp://stackoverflow.com/questions/ask1.csvhttps://stackoverflow.com/questions/ask3.csv";
  var urlsArray = Regex.Split(urls, "(?=https?://)").Where(i => !string.IsNullOrEmpty(i)).ToArray();

图案(?=https?://)解释:

它是正向前瞻,它确保后面是http 以及可选的s://

【讨论】:

  • 如果 URL 包含类似https://www.myhttpwebsite.com 的内容怎么办?
  • 不,编译器错误,因为 Split 方法将 StringSplitOptions 作为第二个参数以及 string 。
  • @Axya 它可以在我的电脑上运行,也可以查看更新:)
  • @Axya 那么你应该接受答案(答案左侧的绿色复选标记)。
【解决方案2】:

如果它们都是 https://:

var a = urls.Split(new[]{"https://"}, StringSplitOptions.None).Select(url => "https://" + url);

但是您可以使用正则表达式,如果混合使用 http/s 会很有帮助。正则表达式周围的括号会导致保留分隔符,但这会产生{"scheme", "host/path", "scheme", "host/path"} 的数组,因此需要做一些工作才能将方案重新粘贴到主机/路径上

string[] result = Regex.Split(urlsasstring, @"(https?://)");
string[] urls = new string[result.Length/2];
for(int x = 0, y=0; x < result.Length; x+= 2,y++){
  urls[y] = result[x] + result[x+1];
}

或者您可以使用 indexof 和 substringing 自己跳过它。令人讨厌的是,没有一个 IndexOfAny 需要一个字符串数组(对于 http / https),但你可以做 http,然后 IndexOf 为 :// 并查看它在第一个 IndexOf 之后是 4 还是 5,如果不是跳过。每次找到一个新的有效索引时,调用它们之间的前一个索引和子字符串。我认为相当参与..做一个urlsasstring.Replace可能会更容易用一个没有出现在url(标签?)中的单个字符替换http://和另一个不出现的字符https://出现在 url(换行符?)然后使用 IndexOfAny,然后作为子字符串处理的一部分转换回来

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多