将字符串分成数组的部分

3
我遇到了以下问题:
我想要将一个字符串的部分存入数组中。使用splitstring函数似乎不成问题,但是它会去掉我的运算符。
举个例子: 字符串为: "47-62*5141", 我需要的结果为: {"47", "-", "62", "*", "5141"}。
如果您能提供一个代码示例,那就太好了!

1
请展示一下你已经尝试过的内容,添加一些代码片段。 - W3hri
3个回答

2

只需按照存在于中间的单词边界进行拆分。

Regex.Split(string, @"(?!^)\b(?!$)");

DEMO


1
或匹配单词和非单词字符 @"\w+|\W+" - Avinash Raj

0

我写了一点丑陋的代码。但它能工作。

class Program
{
    static void Main(string[] args)
    {
        var text = "47-62**5141";

        var splittedText = text.SplitAndKeepSeparator('-', '*');

        foreach (var part in splittedText)
        {
            Console.WriteLine(part);
        }
        Console.ReadLine();
    }

}

public static class StringExtensions
{
    public static IEnumerable<string> SplitAndKeepSeparator(this string s, params char[] seperators)
    {
        var parts = s.Split(seperators, StringSplitOptions.None);

        var partIndex = 0;
        var isPart = true;
        var indexInText = 0;
        while (partIndex < parts.Length)
        {
            if (isPart)
            {
                var partToReturn = parts[partIndex];

                if (string.IsNullOrEmpty(partToReturn))
                {
                    partToReturn = s[indexInText].ToString();
                }
                else
                {
                    isPart = false;
                }
                indexInText += partToReturn.Length;
                partIndex++;

                yield return partToReturn;
            }
            else
            {
                var currentSeparator = s[indexInText];
                indexInText++;
                isPart = true;
                yield return currentSeparator.ToString();
            }
        }
    }

0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] parts = new string[100];

            var text = "47-62*5141";
            int i = 0;

            var splittedText = text.SplitAndKeepSeparator('-', '*', '+', '/');

            foreach (var part in splittedText)
            {
                    parts[i] = part;
                    i++;

            }
            Console.ReadLine();
            Console.WriteLine(parts[0]);
            Console.WriteLine(parts[1]);
            Console.WriteLine(parts[2]);
            Console.WriteLine(parts[3]);
            Console.ReadLine();
        }
    }
}
public static class StringExtensions
{
    public static IEnumerable<string> SplitAndKeepSeparator(this string s, params char[] seperators)
    {
        var parts = s.Split(seperators, StringSplitOptions.None);

        var partIndex = 0;
        var isPart = true;
        var indexInText = 0;
        while (partIndex < parts.Length)
        {
            if (isPart)
            {
                var partToReturn = parts[partIndex];

                if (string.IsNullOrEmpty(partToReturn))
                {
                    partToReturn = s[indexInText].ToString();
                }
                else
                {
                    isPart = false;
                }
                indexInText += partToReturn.Length;
                partIndex++;

                yield return partToReturn;
            }
            else
            {
                var currentSeparator = s[indexInText];
                indexInText++;
                isPart = true;
                yield return currentSeparator.ToString();
            }
        }
    }
}

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