繁体   English   中英

C#中的字符串操作

[英]String operation in C#

我有一个输入字符串,其中的数据以以下格式输入:

  • “ http:// testing / site / name / lists / tasks”
  • “ http:// testing / site / name1 / lists / tasks”
  • “ http:// testing / site / name2 / lists / tasks”等,

如何从该字符串中仅提取name,name1,name2等?

这是我尝试过的:

SiteName = (Url.Substring("http://testing/site/".Length)).Substring(Url.Length-12) 

它引发异常,指出StartIndex不能大于字符串中的字符数。 我的表情怎么了? 我该如何解决? 谢谢。

更好的选择是使用正则表达式匹配/替换

但以下假设也可以工作,即所有网址的格式都相似

var value = Url.Replace(@"http://testing/site/", "").Replace(@"/lists/tasks", "");

另一个选择是使用Uri

var uriAddress = new Uri(@"http://testing/site/name/lists/tasks");

然后根据您的要求分解uri零件

这是regexp的工作:

string strRegex = @"http://testing/site/(.+)/lists/tasks";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"http://testing/site/name/lists/tasks" + "\r\n" + @"http://testing/site/name1/lists/tasks" + "\r\n" + @"http://testing/site/name2/lists/tasks" + "\r\n" + @"http://testing/site/name3/lists/tasks";

foreach (Match myMatch in myRegex.Matches(strTargetString))
{
  if (myMatch.Success)
  {
    // Add your code here. Reference to first group
  }
}

您也可以使用Uri类来获取所需的部分:

string[] urlString = urlText.Split();
Uri uri = default(Uri);
List<string> names = urlString
    .Where(u => Uri.TryCreate(u, UriKind.Absolute, out uri))
    .Select(u => uri.Segments.FirstOrDefault(s => s.StartsWith("name", StringComparison.OrdinalIgnoreCase)))
    .ToList();

假设该部分始终以“名称”开头。

因为只有一个参数的Substring函数采用起始字符的索引,并将全部消耗到字符串的末尾。 这将是一个有点天真,但你可以在charachter 19开始: Url.Substring(19);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM