如何首先“将字符串拆分为数组”然后“向该数组添加内容”? || 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的可能重复
始终使用正确的工具!数组不是为此而制作的;使用列表将 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# 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章