获取带有“text + space + number”的子字符串并修剪其余部分

时间:2016-10-17 15:50:16

标签: c# regex string substring

你怎么能写一个函数/正则表达式给你第一个字符块+第一个不用空格分隔的数字而忽略其余的? 以下是给定不同字符串(“input” - >“result”)结果应该是什么样子的一些示例:

registerActivityLifecycleCallbacks(new OnApplicationForegroundBackgroundEnterCallbacks(this));

4 个答案:

答案 0 :(得分:2)

单向(单词包含a-z - )

$.when.apply($, deferreds).then(
    function() {
        var n;
        for (n = 0; n < arguments.length; ++n) {
             console.log("Result " + n, arguments[n][0]);
        }
    },
    function() {
        // At least one request failed
    }
);

答案 1 :(得分:1)

这是使用TakeWhileSkipWhile方法的LINQ解决方案。 (我测试了你所有的参赛作品并且有效):

string str = "abc 11 3";
var result = string.Concat(string.Join("", str.TakeWhile(c => !char.IsDigit(c))),
             string.Join("", str.SkipWhile(c => !char.IsDigit(c)).TakeWhile(char.IsDigit)));

不要忘记先将using System.Linq;添加到using指令中。

答案 2 :(得分:1)

 class Program
    {
        static void Main(string[] args)
        {

            string[] Value = new string[] {
 "abc 1",
"abc def 1",
"abc-def 1",
"abc 1b",
"abc 11 b3",
"abc 11 3",
"abc 11b"
            };


            foreach (string value in Value)
            {
                Match match = Regex.Match(value, @"^([A-Za-z-]+) (\d+)");
                if (match.Success)
                {
                    var word = match.Groups[1].Value;
                    var num = match.Groups[2].Value;
                    Console.WriteLine(word + " " + num);
                }
            }

        }
    }


//abc 1
//abc-def 1
//abc 1
//abc 11
//abc 11
//abc 11

答案 3 :(得分:0)

这应该有用......

^(.*)[0-9]