如果字符串是“abcd.vv”,则代码必须删除“.vv”并仅返回“abcd”。我正在使用波纹管代码,但它给我一个错误,如
“只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句”
public string remChar(string LicID)
{
if (LicID.Contains("."))
{
int index = LicID.IndexOf(".");
return LicID.Substring(0, index);
}
else LicID;
}
答案 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);