【问题标题】:VB to C# equivalent Split FunctionVB 到 C# 等效的拆分函数
【发布时间】:2019-08-27 04:43:45
【问题描述】:

我有那个 VB 代码...

Dim htcsplit() As String = Split(value.Text.Replace(" ", ""), ",")

尝试为 c# 调整它。

可惜我不会写

string[] htcsplit = String.Split(value.Text.Replace(' ', null),',');

因为字面量不能为空。

有解决办法吗?

【问题讨论】:

标签: c# vb.net


【解决方案1】:

这应该可行:

string[] htcsplit = value.Text.Replace(" ", "").Split(',');

【讨论】:

    【解决方案2】:

    你可以使用 string.Empty 代替 "" 这会将值替换为 string 而不是字符,但应该带来相同的结果。被替换字符的字符串可以被字符或字符串分割。

    试试:

    string[] htcsplit = value.Text.Replace(" ", string.Empty).Split(',');
    

    string[] htcsplit = value.Text.Replace(" ", string.Empty).Split(",");
    

    【讨论】:

    • "" 和string.Empty 没有区别。正如我所看到的,建议使用string.Empty 以提高可读性并避免不必要的编译器生成的常量,但在后一种情况下,我假设现在的编译器足够聪明,甚至可以优化多个 "" 文字。
    • 是的,"" 等于 string.Empty。我想指出,替换函数现在基于字符串数据类型而不是 char,就像 OP 最初尝试编写的那样。而“”在我看来总是有点修修补补。 ;o)
    【解决方案3】:

    C# 中的等价物应该是:

    string[] htcsplit = value.Text.Replace(" ", string.Empty).Split(',');
    

    或者(如果你有Split 方法)

    string[] htcsplit = Split(value.Text.Replace(" ", string.Empty), ',');
    

    例如Split方法:

    string[] Split(string input, char separator)
    {
        return input.Split(separator);
    }
    

    有一些转换器可以帮助你:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多