C# 仅在存在时使用数组

     2023-04-13     156

关键词:

【中文标题】C# 仅在存在时使用数组【英文标题】:C# only use arrays if it exists 【发布时间】:2021-02-19 01:28:37 【问题描述】:

我是编程初学者。而现在我面临着一个我无法再进一步的任务。可能比较容易解决。

这就是我想做的:我读出了一个.txt文件,里面有几行内容。

.txt 文件中的内容示例:

text1,text2,text3
text1,text2,
text1,text2,text3,text4

我现在已经准备好找到正确的线路并使用它。然后我想拆分行并将每个文本分配给它自己的字符串。

如果我知道这一行有 4 个单词,我可以这样做。但是如果我不知道这行有多少个单词怎么办。

例如,如果我想分配 5 个字符串,但列中只有 4 个数组,则会出现错误。

我的程序目前如下所示:

string reader = "text1,text2,text3,text4";
string[] words = reader.Split(',');

string word1 = words[0].ToString();
string word2 = words[1].ToString();
string word3 = words[2].ToString();
string word4 = words[3].ToString();

textBox1.Text = word3;

我的目标是找出字符串中有多少个单词。然后将每个单词传递给一个单独的字符串。

提前谢谢你

【问题讨论】:

不要考虑尝试分配给单独的变量-您已经有一种访问每个字符串的方法-例如words[2] 使您可以访问第三个字符串。 (另外,对于已经是字符串的东西,无需ToString() 查看words.Length可以查看一行有多少字 老实说,您可能希望将字符串保存在数组中。 如果数组有 1234 字样(假设我提供了一个小旁白)怎么办?你真的想要1234 局部变量吗? 【参考方案1】:

要获取Array的长度,可以很方便的使用.Length

在您的示例中,您只需编写

int arraylength = words.Length;

我不明白,为什么要为字符串数组的每个值创建一个新字符串?您可以在数组中使用它们。

在您的示例中,您始终使用 .ToString(),这不是必需的,因为您已经有一个字符串。

数组只是连接到另一个的多个变量(在您的示例字符串中)。

【讨论】:

是的,你是对的,谢谢你的回答。我可以使用我拥有的数组。但最后我只想花尽可能多的arrys。也许使用控制台示例会更容易。代码:string reader = "text1,text2,text3,text4"; string[] words = reader.Split(',');字符串 word1 = words[0].ToString();字符串 word2 = 单词[1].ToString();字符串 word3 = 单词[2].ToString();字符串 word4 = 单词[3].ToString();输出窗口:text1 text2 text3 text4 但如果我只有 3 或 5 个字符。我要么不显示所有内容,要么得到一个错误,因为第 5 个不存在。 @Alex 所以请检查words.Length,除非words 包含至少6 个元素,否则不要尝试访问words[5] 使用循环显示它们。示例: for(int i = 0; i 【参考方案2】:

我怀疑您是否想要分隔 局部变量,例如 word1word2 等。要了解原因,让我们 把这个想法带到荒谬的地步。想象一下,我们有一个与1234小旁白 只字。我们真的要创建word1, word2, ..., word1234 局部变量吗?

所以,让我们只使用一个 words 数组:

  string[] words = reader.Split(',');

现在,您可以轻松获取数组Length(即项目数):

  textBoxCount.Text = $"We have words.Length words in total";

或者从words 数组中获取第 N 个word(让N 基于一个):

  string wordN = array.Length >= N ? array[N - 1] : "SomeDefaultValue";

在你的情况下(3d word)它可以是

  // either 3d word or an empty string (when we have just two less words) 
  textBox1.Text = array.Length >= 3 ? array[3 - 1] : "";

从技术上讲,您可以使用 Linq 并查询reader 字符串:

  using System.Linq;
  
  ...

  // 3d word or empty string
  textBox1.Text = reader.Split(',').ElementAtOrDefault(3 - 1) ?? "";

但 Linq 似乎在这里过头了。

【讨论】:

如何在 C# 中使用 TaskScheduler 设置“仅在登录时运行”和“运行方式”?

】如何在C#中使用TaskScheduler设置“仅在登录时运行”和“运行方式”?【英文标题】:Howtoset“runonlyifloggedin”and“runas”withTaskSchedulerinC#?【发布时间】:2017-09-2119:04:50【问题描述】:我正在尝试使用c#TaskSchedulerManagedWrapper在Window... 查看详情

MySQL 仅在表不存在时插入数据

】MySQL仅在表不存在时插入数据【英文标题】:MySQLinsertingdataonlyiftabledoesn\'texist【发布时间】:2008-11-1422:01:06【问题描述】:仅使用严格的SQL(没有PHP或其他任何东西),是否可以创建一个表并在该表不存在的情况下将默认数据... 查看详情

在 C# 中使用“Regex”检查字符串数组中是不是存在元素

】在C#中使用“Regex”检查字符串数组中是不是存在元素【英文标题】:Tocheckifanelementispresentinastringarrayusing"Regex"inc#在C#中使用“Regex”检查字符串数组中是否存在元素【发布时间】:2021-11-0401:56:12【问题描述】:帮助我使... 查看详情

希望 Where 子句中的“存在”仅在传递的参数有值时使用

】希望Where子句中的“存在”仅在传递的参数有值时使用【英文标题】:Want\'Exists\'inaWhereclausetobeusedonlywhenpassedparameterhasavalue【发布时间】:2009-08-1400:52:41【问题描述】:我在存储过程中有一个类似于下面的Select(为简洁起见而... 查看详情

Oracle - 仅在不存在时创建索引

】Oracle-仅在不存在时创建索引【英文标题】:Oracle-Createanindexonlyifnotexists【发布时间】:2017-11-1607:18:09【问题描述】:只有当它们不存在时,有没有办法在oracle中创建索引?有点像CREATEINDEXIFNOTEXISTSord_customer_ixONorders(customer_id);【... 查看详情

仅在存在承载标头时才验证 JWT

】仅在存在承载标头时才验证JWT【英文标题】:OnlyvalidateJWTifbearerheaderispresent【发布时间】:2019-11-0401:29:05【问题描述】:如果用户已登录,我有一些API端点(.netcoremvc)将使用登录用户(JWT),但任何人都可以调用该方法。通... 查看详情

仅在不存在时如何创建 terraform 资源

】仅在不存在时如何创建terraform资源【英文标题】:Howtocreateaterraformresourceonlyifdoesn\'texists【发布时间】:2020-04-1317:54:17【问题描述】:我正在使用terraform在AWS中创建一个角色。由于IAM是非区域服务,我只想创建一次角色。所以... 查看详情

H2仅在不存在时插入行

】H2仅在不存在时插入行【英文标题】:H2insertrowonlyifdoesn\'texist【发布时间】:2016-03-3120:40:33【问题描述】:我正在使用H2文件数据库,但遇到了以下问题。假设我有一个名为PROPERTIES的表,其中包含两个VARCHAR(255)列:NAME和VALUE,... 查看详情

仅在 C# 中的 Date 类型 - 为啥没有 Date 类型?

】仅在C#中的Date类型-为啥没有Date类型?【英文标题】:AtypeforDateonlyinC#-whyistherenoDatetype?仅在C#中的Date类型-为什么没有Date类型?【发布时间】:2011-07-1522:03:04【问题描述】:在我们的C#项目中,我们需要表示没有时间的日期。我... 查看详情

Elasticsearch 批量索引 - 仅在存在时更新

】Elasticsearch批量索引-仅在存在时更新【英文标题】:ElasticsearchBulkIndex-Updateonlyifexists【发布时间】:2016-08-1415:45:26【问题描述】:我正在使用ElasticsearchBulkIndex更新文档的一些统计信息,但我尝试更新的文档可能不存在-在这种情... 查看详情

jQuery:仅在图像存在时插入图像

】jQuery:仅在图像存在时插入图像【英文标题】:jQuery:insertimageonlyifitexists【发布时间】:2012-12-2405:53:22【问题描述】:我正在使用jQuery将图像和文本块插入到我的文档中,但我只想包含实际存在的图像(图像路径是一个变量,i... 查看详情

仅在文件存在时运行数据融合管道

】仅在文件存在时运行数据融合管道【英文标题】:RunaDataFusionpipelineonlywhenafileexist【发布时间】:2022-01-2323:20:02【问题描述】:我在DataFusion中已经有一个工作管道,它使所有ETL进程,但只有当它在CloudStorage存储桶中找到一个名... 查看详情

XQuery sql 仅在存在时选择节点

】XQuerysql仅在存在时选择节点【英文标题】:XQuerysqlselectnodeonlyifexists【发布时间】:2021-12-1822:40:47【问题描述】:我正在使用SQLServer2012我正在寻找一种方法来从我的表中选择一些具有XML数据类型的节点值,如下所示。我有以下... 查看详情

如果存在则插入仅在表中有记录时才有效

】如果存在则插入仅在表中有记录时才有效【英文标题】:Insertifexistsonlyworksiftherearerecordsintable【发布时间】:2016-04-1809:05:59【问题描述】:我使用以下查询仅在表不存在时将记录插入到表中:INSERTINTOtblExample(exampleColumn)SELECT\'tes... 查看详情

如何仅在数据存在时验证 laravel 输入?

】如何仅在数据存在时验证laravel输入?【英文标题】:Howtovalidatelaravelinputonlywhendataispresent?【发布时间】:2022-01-0400:11:20【问题描述】:所以我有一个Laravel表单来收集数据,我使用相同的表单来创建和更新表格。问题是我只想... 查看详情

如何使用 ValueEventListener 仅在添加新子代时生成 tost,而不为已经存在的子代生成?有任何想法吗?

】如何使用ValueEventListener仅在添加新子代时生成tost,而不为已经存在的子代生成?有任何想法吗?【英文标题】:HowtouseaValueEventListenertoonlygenerateatostforwhennewchildrenareadded,butnotforalreadyexistingchildren?AnyIdeas?【发布时间】:2021-03-0818:... 查看详情

可选择启动活动并使用来自 Android 服务的通知。仅在存在某个应用程序时启动或通知

】可选择启动活动并使用来自Android服务的通知。仅在存在某个应用程序时启动或通知【英文标题】:OptionallystartingactivitiesandusingnotificationsfromservicesinAndroid.Onlylaunchornotifyifacertainappispresent【发布时间】:2012-02-0410:33:07【问题描述... 查看详情

调用方法并将返回值分配给数组时,为啥C#在调用方法时使用数组引用?

...调用方法并将返回值分配给数组时,为啥C#在调用方法时使用数组引用?【英文标题】:Whencallingamethodandassigningreturnedvaluetoanarray,whyisC#usingthearrayreferencewhenmethodwascalled?调用方法并将返回值分配给数组时,为什么C#在调用方法时使... 查看详情