【问题标题】:String manipulation complexity字符串操作复杂度
【发布时间】:2012-07-31 08:40:11
【问题描述】:

我已经编程一年了,我已经做了很多次string 操作,但从来不明白它实际上是如何工作的,或者最好的方法是什么。

假设我有这个字符串

String abc = "https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx";

我只想要这部分

"https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104"

字符/名称可以更改并且是动态的,但是“/”不是。有人可以演示最简单和最好的方法吗?

【问题讨论】:

  • “字符串操作”涵盖了一个巨大的可能性领域,既使用内置字符串函数,也使用正则表达式之类的东西。你在这里问什么没有什么意义,因为你没有给我们任何操作应该遵循的“规则”
  • 你的意思是,你会在 9 号断掉字符串 /?
  • @fdgfdgsdfg 在谈到字符串操作时,我主要会选择正则表达式。但是,它们是有代价的(加工和维护)。对于您的情况,更简单的方法是最直接的:计算反斜杠并获得 substring
  • @AndreCalil 当我尝试使用 SubString 时,它要求两个 Int 参数:S
  • @fdgfdgs dfg 您是否尝试阅读 substring 函数的文档?它解释了这“两个 Int 参数”是什么。

标签: c# asp.net string .net-2.0


【解决方案1】:

这里要记住的一件事是,如果您正在处理 Uri,最好使用 Uri 类来提取信息片段,而不是尝试将解决方案串在一起。

http://msdn.microsoft.com/en-us/library/system.uri.aspx

例如:

var part = String.Format("{0}://{1}{2}",uri.Scheme,uri.Authority, String.Join("",uri.Segments.Take(7)));

获取您要查找的部分。实例:http://rextester.com/JRWKOG58567


编辑

在发现了更多需求和框架限制之后,您可能会更好地进行字符串混搭,但您仍然可以利用 Uri 类中的一些功能。

var input = "https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx";
var uri = new Uri(input);
StringBuilder sb = new StringBuilder();
sb.AppendFormat("{0}://{1}/",uri.Scheme,uri.Authority);

var parts = uri.PathAndQuery.Split(new char[]{'/'},StringSplitOptions.RemoveEmptyEntries);
for(var i=0;i<6;i++){
    sb.AppendFormat("/{0}",parts[i])   ;
}
Console.WriteLine(sb.ToString());

现场示例:http://rextester.com/HBK80648

【讨论】:

  • 我是从数据库中获取的,需要获取其中的一部分来执行存储过程以从数据库中获取一些其他信息
  • 对于 string.join 函数,它说不能将 IENumerable 转换为 []
  • @fdgfdgsdfg - 旧版本的框架没有String.Join 的重载,因此您需要将段转换为数组。因此String.Join("",uri.Segments.Take(7).ToArray())
  • 当我使用代码时,它给了我想要的东西,但它以“/”结尾,这不是必需的,我应该使用“.remove”删除它还是有更好的方法
  • 我也不能使用“Take”功能
【解决方案2】:
 var t="https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104/1007/tingjack/default.aspx";
     string[] g= t.Split('/');
     var h=String.Join("/", g.Where((i,n)=>n<9).ToArray());
    Console.write( h);

结果:https://uu2020.devuueva.com/portal/mesddsa/usforeer/nance/tings/M3C102d4104

【讨论】:

  • 我们应该为“Dumb()”函数使用哪个程序集
  • @fdgfdgsdfg 可以合并成一行,但为了更清楚,我分开了。
  • 在 System.Array 中未定义“Where”的异常,我想我使用的是旧版本,有没有其他可用的替代方法?
猜你喜欢
  • 2015-05-14
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 2022-01-20
相关资源
最近更新 更多