如何首先“将字符串拆分为数组”然后“向该数组添加内容”? || C# 控制台应用程序

Posted

技术标签:

【中文标题】如何首先“将字符串拆分为数组”然后“向该数组添加内容”? || C# 控制台应用程序【英文标题】:How to first 'Split a string to an Array' then 'Add something to that Array'? || C# Console App 【发布时间】:2020-02-14 00:49:18 【问题描述】:

我正在尝试创建一个将字符串拆分为数组然后添加的程序 到那个数组。

拆分字符串是可行的,但是添加到数组中确实是建立了一个 战斗。

//here i create the text
string text = Console.ReadLine();
Console.WriteLine();

//Here i split my text to elements in an Array 
var punctuation = text.Where(Char.IsPunctuation).Distinct().ToArray();
var words = text.Split().Select(x => x.Trim(punctuation));

//here i display the splitted string
foreach (string x in words)

  Console.WriteLine(x);


//Here a try to add something to the Array
Array.words(ref words, words.Length + 1);
words[words.Length - 1] = "addThis";

//I try to display the updated array
foreach (var x in words)

  Console.WriteLine(x);


//Here are the error messages |*error*|
Array.|*words*|(ref words, words.|*Length*| + 1);
words[words.|*Length*| - 1] = "addThis";

“数组”不包含“单词”的定义

不包含长度定义

不包含长度定义 */

【问题讨论】:

***.com/questions/1440265/… 和 ***.com/questions/1126915/… 您的两个问题有很多答案。不到 30 秒 你是怎么想到使用Array.words的? 我想你的意思是Array.Resize,而不是Array.words How to add a string to a string[] array? There's no .Add function的可能重复 始终使用正确的工具!数组不是为此而制作的;使用列表 ! 【参考方案1】:

将 IEnumerable 转换为 List:

var words = text.Split().Select(x => x.Trim(punctuation)).ToList();

一旦是列表,就可以拨打Add

words.Add("addThis");

【讨论】:

认为先尝试使用数组但我很感激答案!【参考方案2】:

技术上,如果你想在标点符号上分开,我建议Regex.Split而不是string.Split

  using System.Text.RegularExpressions;

  ...

  string text = 
    @"Text with punctuation: comma, full stop. Apostroph's and ""quotation?"" - ! Yes!";

  var result = Regex.Split(text, @"\pP");

  Console.Write(string.Join(Environment.NewLine, result));

结果:

Text with punctuation      # Space is not a punctuation, 3 words combined
 comma
 full stop
 Apostroph                 # apostroph ' is a punctuation, split as required
s and 
quotation



 Yes

如果你想添加一些项目,我建议 Linq Concat().ToArray():

    string text = 

    string[] words = Regex
      .Split(text, @"\pP")
      .Concat(new string[] "addThis")
      .ToArray();

但是,您似乎想提取单词,而不是在puctuation上拆分,您可以匹配这些单词:

  using System.Linq;
  using System.Text.RegularExpressions;

  ...

  string text = 
    @"Text with punctuation: comma, full stop. Apostroph's and ""quotation?"" - ! Yes!";

  string[] words = Regex
    .Matches(text, @"[\pL']+") // Let word be one or more letters or apostrophs
    .Cast<Match>()
    .Select(match => match.Value)
    .Concat(new string[]  "addThis")
    .ToArray();

  Console.Write(string.Join(Environment.NewLine, result));

结果:

Text
with
punctuation
comma
full
stop
Apostroph's
and
quotation
Yes
addThis

【讨论】:

非常感谢!我将研究 Regex 和 Concat 以更好地理解这一点:)

以上是关于如何首先“将字符串拆分为数组”然后“向该数组添加内容”? || C# 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何通过分隔符将字符串拆分为数组?

如何在 C++ 中将数字字符串拆分为数组? [复制]

Android将字符串拆分为数组[重复]

swift 按字符串将字符串拆分为数组

将字符串拆分为数组

将字符串拆分为数组错误