2015-09-27 87 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(); 
      } 
     } 
    } 
}