发生“。”后删除字符。

时间:2015-03-18 16:20:45

标签: c#

如果字符串是“abcd.vv”,则代码必须删除“.vv”并仅返回“abcd”。我正在使用波纹管代码,但它给我一个错误,如

“只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句”

public string remChar(string LicID)
{
    if (LicID.Contains("."))
      {
        int index = LicID.IndexOf(".");
        return LicID.Substring(0, index);
      }
    else LicID;
}

5 个答案:

答案 0 :(得分:2)

您的代码失败的原因是您缺少return语句。

public string remChar(string LicID)
{
    if (LicID.Contains("."))
      {
        int index = LicID.IndexOf(".");
        return LicID.Substring(0, index);
      }

    return LicID;
}

这样的东西也可以起作用并简化它......

using System.Linq;


public string removeChar(string LicID)
{
    return (LicID ?? "").Split('.').First();
}

答案 1 :(得分:2)

为了阻止令人困惑的答案,你当前的代码有一个编译错误,因为Carsten指出,仅此而已。除此之外还有一些防御性检查,它确实有效。

这将编译并执行您需要的操作(加上一些额外的检查,忽略大小写,并删除多余的语句):

public static string RemoveCharactersAfterFirstPeriod(string value)
{
    if (!string.IsNullOrWhiteSpace(value) && value.Contains("."))
    {
        int index = value.IndexOf(".", StringComparison.OrdinalIgnoreCase);
        return value.Substring(0, index);
    }

    return value;
}

或者与Linq:

public static string RemoveCharactersAfterFirstPeriod(string value)
{
    return (value ?? "").Split('.').First();
}

如果它经过单元测试并且符合您的要求,那么将其换成一条线就是零价值的前景。我唯一的改变就是将方法重命名为C#命名标准。

答案 2 :(得分:-1)

使用Regex

public static string ExtractString(string text)
{
    if (text == null)
        throw new ArgumentNullException("text");

    return Regex.Match(text, @"^[^\.]*").Groups[0].Value;
}

答案 3 :(得分:-1)

Regex.Match("input.foo", @"([^\.]*)\.?.*").Groups[1].ToString()

返回输入

Regex.Match(".foo", @"([^\.]*)\.?.*").Groups[1].ToString()

返回空字符串

Regex.Match("input", @"([^\.]*)\.?.*").Groups[1].ToString()

返回输入

Regex.Match("", @"([^\.]*)\.?.*").Groups[1].ToString()

返回空字符串

Regex.Match("input.foo.bar", @"([^\.]*)\.?.*").Groups[1].ToString()

返回输入

答案 4 :(得分:-3)

假设您的字符串始终为XXX.XXX格式,为什么不这样做:

string result = Path.GetFileNameWithoutExtension(licID);