我遇到以下問題:將字符串的部分插入到數組中
我想將字符串的一部分放入數組中。到目前爲止沒有問題(拆分字符串),但是,我不能使用splitstring
,因爲它會讓我的運營商退出。
解釋上的例子:
以下字符串:"47-62*5141"
我需要這樣的:{"47", "-", "62", "*", "5141"}
如果你能給我一個代碼示例,我會很高興的!
我遇到以下問題:將字符串的部分插入到數組中
我想將字符串的一部分放入數組中。到目前爲止沒有問題(拆分字符串),但是,我不能使用splitstring
,因爲它會讓我的運營商退出。
解釋上的例子:
以下字符串:"47-62*5141"
我需要這樣的:{"47", "-", "62", "*", "5141"}
如果你能給我一個代碼示例,我會很高興的!
我做了一個小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();
}
}
}
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();
}
}
}
}
請出示你有什麼到目前爲止已經試過,添加一些代碼片斷。 – W3hri