C# 删除数字但保留大括号的字符串

C# 删除数字但保留大括号的字符串,c#,C#,我有一些字符串,看起来像例如 15 Hour(s) 10 Day(s) 5 Month(s) 2 Year(s) 根据用户输入,上述字符串中的int。我想要达到的是让我的最后一根弦变成这样 Hour(s) Day(s) ... 为此,我创建了一个扩展方法,如下所示: public static string ExractLetter(this string original) { return new string(original.Where(char.IsLetter).ToArr

我有一些字符串,看起来像例如

15 Hour(s)
10 Day(s)
5 Month(s)
2 Year(s)
根据用户输入,上述字符串中的
int
。我想要达到的是让我的最后一根弦变成这样

Hour(s)
Day(s)
...
为此,我创建了一个扩展方法,如下所示:

public static string ExractLetter(this string original)
{
   return new string(original.Where(char.IsLetter).ToArray());
}
这很好,但是它也会从字符串中删除
()
。因此,我的问题是如何删除号码并保留
()
这应该可以:

  public static string ExractLetter(this string original)
    {
       return new string(original.Where(d => !char.IsDigit(d)).ToArray());
    }
这应该起作用:

  public static string ExractLetter(this string original)
    {
       return new string(original.Where(d => !char.IsDigit(d)).ToArray());
    }

如果字符串格式始终类似于
15小时
,则可以按空格
Split()
,并使用第二个元素,如

"15 Hour(s)".Split(' ')[1]

如果字符串格式始终类似于
15小时
,则可以按空格
Split()
,并使用第二个元素,如

"15 Hour(s)".Split(' ')[1]

您可以使用正则表达式来实现这一点

public static string ExractLetter(this string original)
{
   return Regex.Replace(original, @"[\d-]", string.Empty);
}

您可以使用正则表达式来实现这一点

public static string ExractLetter(this string original)
{
   return Regex.Replace(original, @"[\d-]", string.Empty);
}

应使用跳过所有数字或数字字符

return new string(original.Where(c => !char.IsDigit(c) && !char.IsNumber(c)).ToArray()).Trim();

应使用跳过所有数字或数字字符

return new string(original.Where(c => !char.IsDigit(c) && !char.IsNumber(c)).ToArray()).Trim();

更简单的选择是跳过,直到遇到第一个字母:

public static string ExractLetter(this string original)
{
   return new string(original.SkipWhile(!char.IsLetter).ToArray());
}

更简单的选择是跳过,直到遇到第一个字母:

public static string ExractLetter(this string original)
{
   return new string(original.SkipWhile(!char.IsLetter).ToArray());
}

一个删除数字和空格的简单正则表达式怎么样

var input = new Array { "15 Hour(s)", "10 Day(s)", "5 Month(s)", "2 Year(s)"};
var regex = new Regex(@"[\d\s]");

foreach (var str in input)
{
    Console.WriteLine(regex.Replace(str, string.Empty));
}
产出:

Hour(s)
Day(s)
Month(s)
Year(s)

一个删除数字和空格的简单正则表达式怎么样

var input = new Array { "15 Hour(s)", "10 Day(s)", "5 Month(s)", "2 Year(s)"};
var regex = new Regex(@"[\d\s]");

foreach (var str in input)
{
    Console.WriteLine(regex.Replace(str, string.Empty));
}
产出:

Hour(s)
Day(s)
Month(s)
Year(s)


您可以只添加该逻辑
c=>char.isleter(c)| | c=='(“| | c==”)
string result=Regex.Replace(“原始”,@“^[0-9]+\s+,”)哇,这么短的时间内有这么多的答案,有另一个
返回original.Substring(original.IndexOf(“”)+1)注意:如果可以有不带空格的值,您可能需要检查
IndexOf
是否返回-1。您可以只添加该逻辑
c=>char.isleter(c)| | c=='('| | c=='))
字符串结果=Regex.Replace(“原始”、@“^[0-9]+\s+,”)哇,这么短的时间内有这么多的答案,有另一个
返回original.Substring(original.IndexOf(“”)+1)注意:如果可以有不带空格的值,您可能需要检查
IndexOf
是否返回-1。我想您需要
@“^\d+”
在行间和后面的空格处删除一个或多个数字。我怀疑这里是否需要处理负数。我想您希望
@“^\d+”
在行间和后面的空格处删除一个或多个数字。我怀疑这里是否需要处理负数。我收到以下错误消息
“!”无法应用于“方法组”类型的操作数。
@code它应该是
d=>!char.IsDigit(d)
谢谢您的帮助,我会尽快接受它up@Code,请注意,这也会保留空间。@juharr我刚刚意识到我自己会收到以下错误消息
!'无法应用于“方法组”类型的操作数。
@code它应该是
d=>!char.IsDigit(d)
谢谢您的帮助,我会尽快接受它up@Code,请注意,这也会保留空间。@juharr我刚刚意识到我自己,这仍然会保留空间。你是对的。我最喜欢这种方法,因为它能让你控制被移除的东西,这仍然会留下空间。你是对的。我最喜欢这种方法,因为它能让你控制被移除的内容