从字符串中删除前n个字母。

4

我需要从一个字符串中去除前n个字母。

示例:

a123456 -> 123456
abc123456 -> 123456
abc123456def -> 123456def

2个回答

10

可以尝试像这样:

String output = Regex.Replace(input, @"^[^\d]+", String.Empty);

这是这个正则表达式的工作原理:

^[^\d]+

^ 将表达式锚定到字符串的开头
[^\d] 是一个字符集,匹配所有非整数值
+ 通过使[^\d] 匹配一次或多次来修饰它

因此,这个正则表达式匹配字符串中所有的非整数字符,直到匹配到一个整数字符为止。


1
static string AlphaTrimRight(string value)
{
    while (!Char.IsNumber(value[0]))
        value = value.Substring(1, value.Length - 1);
    return value;
}

Substring是否与原始字符串共享底层char[]? - Michael Myers
可能没有任何问题;C#字符串的实现方式可能与Java字符串完全不同。Java字符串具有内部char[],可以与由substring()方法创建的字符串共享。我只是想知道C#字符串是否也是这样做的。如果不是,那么这个方法看起来将非常低效(需要大量的char[]复制)。 - Michael Myers
显然,C# 字符串不能共享底层数据:https://dev59.com/kkjSa4cB1Zd3GeqPCAgq。因此,我不喜欢在循环中调用所有的 .Substring()。 - Michael Myers
1
在C#中,字符串可以被用作字符数组,例如: char a = "asdf"[0]; - Shimmy Weitzhandler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接