2015-09-27 41 views
1

我遇到以下问题:将字符串的部分插入到数组中

我想将字符串的一部分放入数组中。到目前为止没有问题(拆分字符串),但是,我不能使用splitstring,因为它会让我的运营商退出。

解释上的例子:
以下字符串:"47-62*5141"
我需要这样的:{"47", "-", "62", "*", "5141"}

如果你能给我一个代码示例,我会很高兴的!

+1

请出示你有什么到目前为止已经试过,添加一些代码片断。 – W3hri

回答

2

根据存在于中间的词边界进行分割。

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

DEMO

+1

或匹配单词和非单词字符'@“\ w + | \ W +”' –

0

我做了一个小uglycode。但它的工作。

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

谢谢你兄弟! – Shaya

+0

欢迎您! – Andection

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(); 
      } 
     } 
    } 
} 
相关问题