【问题标题】:Splitting string with string array but keep delimiters [duplicate]用字符串数组拆分字符串但保留分隔符[重复]
【发布时间】:2016-08-07 22:24:52
【问题描述】:

我正在尝试从语音识别器的文本中解析参数,并且我希望能够将其转换为: “int my variable string some other variable” 进入一个包含两个字符串的数组,如下所示: “int my variable”和“string some other variable” 如您所见,我需要使用字符串数组对其进行拆分,然后保留我使用的分隔符。 有人知道如何做到这一点吗?

【问题讨论】:

  • 为什么选择这种方式(3个词+4个词)而不是其他方式(例如4个词+3个词)?
  • 你的字符串中有很多空格,你选择了一个特定的空格来分割它。你如何决定在哪个空白处分割?
  • 我没有用空格分割。我正在使用字符串数组进行拆分。我确实说过。
  • 如果你没有在空白处分割,那么空白不再是分隔符。你的问题有点混乱。似乎您真的在问“如何从列表中拆分单词字符串?”
  • 没有。我想要做的是拆分一个字符串,以字符串数组作为分隔符,但保留分隔符。我的示例中的分隔符是 int 和 string,但显然如果我使用常用​​方法拆分它,它将删除 int和字符串,这不是我想要的。

标签: c# string split


【解决方案1】:

您可以使用此代码执行此操作,但此代码仅针对您提出的当前问题

string s = "int my variable string some other variable";

string[] sarr1 = new string[] { "string" };
string[] sarr=s.Split(sarr1, StringSplitOptions.None);
for (int i = 0; i < sarr.Length; i++)
{
    if (i == sarr.Length - 1)
        Console.WriteLine(sarr1[0] + sarr[i]);
    else
        Console.WriteLine(sarr[i]);
}

如果你使用的是数组列表,你可以使用这种方法

string s = "int my variable string some other variable float is another variable float is another variable";

 //you can create any string for replacement over here that
 //suit or fits your requirement
s = s.Replace("int", "<@@> <##>");
s = s.Replace("float", "<$$> <%%>");
s = s.Replace("string", "<^^> <&&>");

Dictionary<string, string> dict = new Dictionary<string, string>();
string[] sarr3 = new string[] { "<@@>","<$$>","<^^>" };
string[] sarr = s.Split(sarr3, StringSplitOptions.None);

for (int i = 0; i < sarr.Length; i++)
{
    string temp = sarr[i].Replace("<##>", "int").Replace("<%%>", "float").Replace("<&&>", "string");
    Console.WriteLine(temp);
}

【讨论】:

  • 是的,如果这是我唯一需要使用它的时候,这将起作用,但我提到的字符串是一个示例。我可以有一些非常不同的,比如“char input letter int a number”或类似的东西。
  • 检查更新代码
猜你喜欢
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
相关资源
最近更新 更多