作为一个非政府组织.NET程序员我正在寻找.NET相当于旧的Visual Basic函数left(string, length).它是懒惰的,因为它适用于任何长度的字符串.正如所料,left("foobar", 3) = "foo"人,而最有帮助的是left("f", 3) = "f"人.

在里面NET string.Substring(index, length)对超出范围的所有内容抛出异常.在Java中,我总是随身携带Apache Commons lang.StringUtils.在谷歌,我搜索字符串函数的时间不长.


@Noldorin-哇,谢谢你的VB.NET扩展!我的第一次遇到,尽管我花了几秒钟才用C#做了同样的事情:

public static class Utils
{
    public static string Left(this string str, int length)
    {
        return str.Substring(0, Math.Min(length, str.Length));
    }
}

请注意静电的类和方法以及关键字this.是的,调用它们就像调用"foobar".Left(3)一样简单.另请参见C# extensions on MSDN.

推荐答案

这里有一个扩展方法可以完成这项工作.

<System.Runtime.CompilerServices.Extension()> _
Public Function Left(ByVal str As String, ByVal length As Integer) As String
    Return str.Substring(0, Math.Min(str.Length, length))
End Function

这意味着您可以像使用旧的VBLeft函数(即Left("foobar", 3))一样使用它,也可以使用新的VB.NET语法,即.

Dim foo = "f".Left(3) ' foo = "f"
Dim bar = "bar123".Left(3) ' bar = "bar"

.net相关问答推荐

与 Datagrid 的 SelectedItem 链接时的 WPF RadioButton 绑定问题

cmd 冻结中的 dotnet 命令.怎么了?

图像 UriSource 和数据绑定

每 X 秒执行一次指定函数

在 C# 中将字节数组保存为磁盘上的文件的最有效方法是什么?

如何解决请确保文件可访问并且它是有效的程序集或 COM 组件?

如何让 DateTimePicker 显示一个空字符串?

SubscribeOn 和 ObserveOn 有什么区别

在 ToString() 之前判断 null

我应该在 LINQ 查询中使用两个where子句还是&&?

检索字典值最佳实践

是否有可用的 WPF 备忘单?

.NET 的 String.Normalize 有什么作用?

如何使用 C# 创建自签名证书?

强制 XmlSerializer 将 DateTime 序列化为 'YYYY-MM-DD hh:mm:ss'

如何从头开始以编程方式配置 log4net(无配置)

如何使用 EPPlus 设置 XLSX 单元格宽度?

如何向 C# Winforms 中的标签添加提示或工具提示?

在 try/catch/finally 中等待的一个很好的解决方案?

如何将我的应用程序窗口置于最前面?