如何对字符串使用 .Take() 并在末尾获取字符串?

2023-12-25

LINQ to Objects 支持对字符串对象的查询,但是当我使用如下代码时:

string SomeText = "this is some text in a string";
return SomeText.Take(6).ToString();

我得到的只是:

System.Linq.Enumerable+<TakeIterator>d__3a`1[System.Char]

这被称为“意外”这个问题 https://stackoverflow.com/questions/2702390/how-can-i-evaluate-a-deferred-linq-statement-when-debugging但这就是我实际上想做的事情,但我无法通过任何地方的搜索找到它。

我知道还有其他方法来操作字符串,但我也知道您可以使用 LINQ 做一些非常酷的技巧,我只是想知道是否有一种方法可以使用 LINQ 将字符串修剪到一定长度?


System.Linq 中没有内置方法来执行此操作,但您可以相当轻松地编写自己的扩展方法:

public static class StringExtensions
{
    public static string ToSystemString(this IEnumerable<char> source)
    {
        return new string(source.ToArray());
    }
}

不幸的是,因为object.ToString存在于所有 .NET 对象上,您必须为该方法指定不同的名称,以便编译器调用您的扩展方法,而不是内置方法ToString.

根据您下面的评论,最好质疑这是否是正确的方法。因为String通过其公共方法公开了很多功能,我会将此方法作为扩展来实现String itself:

/// <summary>
/// Truncates a string to a maximum length.
/// </summary>
/// <param name="value">The string to truncate.</param>
/// <param name="length">The maximum length of the returned string.</param>
/// <returns>The input string, truncated to <paramref name="length"/> characters.</returns>
public static string Truncate(this string value, int length)
{
    if (value == null)
        throw new ArgumentNullException("value");
    return value.Length <= length ? value : value.Substring(0, length);
}

您可以按如下方式使用它:

string SomeText = "this is some text in a string";
return SomeText.Truncate(6);

这样做的优点是,当字符串已经短于所需长度时,不会创建任何临时数组/对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对字符串使用 .Take() 并在末尾获取字符串? 的相关文章

随机推荐

  • 动态设置线性布局背景

    我想通过以下方式动态设置线性布局背景 通过 XML 解析从 Web url 获取图像 然后将该图像存储到 SD 卡中 现在图像已保存到 SD 卡中 将该图像设置为应用程序中的线性布局背景 现在我陷入了第三步 有人可以帮忙吗 用这个 Bitm
  • 在Thread中使用EnterCriticalSection更新VCL标签

    我是线程新手 我正在使用一个第三方库 该库使用线程 有时会调用我提供的过程 当线程调用我的过程时 如何更新 TLabel Caption 如果我在其他地方调用了InitializeCriticalSection 它是否像 EnterCrit
  • 光源设置不正确

    我有这段代码 但灯光似乎无法正常工作 当我渲染对象时它很暗 然后当我旋转它时 光源似乎也旋转了 我不知道问题出在哪里 我尝试修改灯光模型但仍然不起作用 这是程序 while glfwWindowShouldClose window Rend
  • Javascript递归设置超时

    我刚刚开始研究 javascript 所以希望这会是简单的事情 我想制作自动播放的图像幻灯片 这非常简单 并且有一些关于它的教程 但由于某种原因我无法让它工作 这就是我所拥有的 var image1 new Image var image2
  • WPF列表框滚动到底部

    我使用 ObservableCollection 作为 listBox 组件的 ItemSource 但控件的行为对我来说并不合适 我已经向下滚动到这件事在我的收藏中第一次出现 但不是最后一次 示例列表为 1 1 2 3 4 5 6 7 8
  • XSLT PI 和样式表参数

    给定一个需要参数的 XSLT 1 x 样式表 是否有任何方法可以将其与指定参数值的 XML 文档关联起来 我阅读了样式表 PI 的 W3C 规范文档 并得到了答案是 否 的印象 但当我读完时 我遇到了急性 BNF 中毒的情况 因此可能错过了
  • 行主与列主矩阵乘法

    我目前正在开发一个 C 程序 尝试计算矩阵乘法 我通过循环第二个矩阵的每一列来完成此任务 如下所示 我已将大小设置为 1000 for i 0 i
  • 如何找出坐标之间的距离?

    我想让它显示两个 CLLocation 坐标之间的距离 有没有办法在没有复杂数学公式的情况下做到这一点 如果没有 你会如何用公式来做呢 CLLocation 有一个 distanceFromLocation 方法 因此给定两个 CLLoca
  • Java HTML->PDF 解决方案?

    我目前正在用 Java 构建一个基于 PDF 的报告 我已经研究过 iText 和 BIRT 但似乎需要付出很大的努力来学习他们的 API 我试图找到一个解决方案 让我可以在 HTMl 中生成报告 我已经知道的东西 并将其输出为 PDF 谁
  • AngularJS 和解析正文

    我正在尝试使用 AngularJS 创建一个网站 由用户生成的内容驱动 可以使用自定义标签 例如 js code js code 以不同方式显示这些部分内的文本 API 向我发送一个包含标签的正文文本字符串 以便在客户端上进行解析 如果我使
  • 在symfony2中实现日志系统

    我想将一个日志文件集成到我用 symfony2 制作的网站中 我的意思是我想保存用户的每个操作 点击按钮 将请求保存到数据库 那可能吗 有人对此有什么想法吗 登录 Symfony 2 是的 文档中确实描述了这一点 Symfony 2 Coo
  • 移动应用程序中的幽灵点击

    有很多关于幽灵点击的材料 帖子 我正在努力更好地理解它 所以我的理解是 幽灵点击的原因是click触摸事件后约 300 毫秒调度事件 jQuery Mobile 建议 http jquerymobile com test docs api
  • JQuery 文本编辑器粘贴而不带格式

    我在我的网站上使用插件 JQuery 文本编辑器 有时 当用户将预先格式化的 HTML 文本从另一个网站复制并粘贴到插件的文本框中时 它会错误地呈现并中断部分字符串 从数据库检索后可以看到损坏的文本 如果您手动编写此文本 或从框中复制并重新
  • 无法禁用 UITextView 中 UIMenuController 中的默认 UIMenuItems

    我正在尝试配置 U IMenuController 的菜单项以获得类似于 Medium 的 iOS 功能的功能 有各种线程致力于此特定任务 但是尽管有数以万计的视图和不同的结果 包括它不适用于足够多的人 似乎没有一个始终有效的解决方案对于
  • 从 XJC 中导入的架构解析类型定义失败

    我使用 JAXB 获得了此 API 以便通过命名引用方便地使用由 XJC XML 到 Java 编译器从 XML 模式生成的对象模型 它通过各种背景魔法和反射抽象了 JAXB 上下文的创建和查找 ObjectFactory 方法 其基本要点
  • 最佳实践:C# 扩展方法命名空间和推广扩展方法

    我知道已经存在一个post https stackoverflow com questions 1051066 naming conventions for extension method namespaces and sponsor c
  • dyld:未加载库:@rpath/SwiftyJSON.framework/SwiftyJSON

    这是问题的续集 dyld 未加载库 rpath SwiftyJSON framework SwiftyJSON https stackoverflow com questions 31830002 dyld library not load
  • Tensorflow 可视化工具“Tensorboard”在 Anaconda 下无法工作

    我目前正在使用张量流 我想可视化我正在编写的卷积神经网络的效果 但是 我无法使用张量板 我看到 conda 环境下的张量板为 envs tensorenv bin tensorboard python 文件 它导入了它找不到的名为tenso
  • 如何在 Vuejs 中的某些特定文本(变量)中强制翻译 i18n

    在正常情况下 我们只需将翻译属性附加到变量上 例如 this name this t language name 但我想有时用一种特定的语言来具体说明 例如 法语 我们可以做这样的事情吗vue js this name this t lan
  • 如何对字符串使用 .Take() 并在末尾获取字符串?

    LINQ to Objects 支持对字符串对象的查询 但是当我使用如下代码时 string SomeText this is some text in a string return SomeText Take 6 ToString 我得