提取用逗号分隔的字符串部分

Posted

技术标签:

【中文标题】提取用逗号分隔的字符串部分【英文标题】:Extract string parts that are separated with commas 【发布时间】:2015-03-17 10:04:06 【问题描述】:

谁能帮我把一个字符串提取成 3 个不同的变量。

来自用户的输入将采用这种格式13,G,true。 我想将数字存储在 int 中,将 G 存储在 chartrue 中到 string

但我不知道如何指定逗号位置,以便逗号之前或之后的字符可以存储在另一个变量中。 我不允许使用LastIndexOf 方法。

我真的是编程新手。

【问题讨论】:

可以使用String.Split吗? 使用string.Split 并使用结果数组。如果您正在解析 csv,请记住有几个 csv 解析器可用。 【参考方案1】:
string msg = "13,G,true";
var myArray = msg.Split(",");

// parse the elements
int number;
if (!Int32.TryParse(myArray[0], out number) throw new ArgumentException("Whrong input format for number");
string letter = myArray[1];
string b = myArry[2];

// or also with a boolean instead
bool b;
if (!Int32.TryParse(myArray[2], out b) throw new ArgumentException("Whrong input format for boolean");

【讨论】:

这个答案不完整(“我想将数字存储在 int 中,将 G 存储在 char 中,并将 true 存储到字符串中。”) "谁能帮我把一个字符串提取成 3 个不同的变量。" - 这就是他需要帮助才能完成您描述的事情,所以从技术上讲,答案是完整的。【参考方案2】:

使用String.Split

string str='13,G,true';
string[] strArr=str.Split(',');

int32 n=0,intres=0;
char[] charres = new char[1];
string strres="";
if(!Int32.TryParse(strArr[0], out n))

intres=n;

if(strArr[0].length>0)

charres[0]=(strArr[1].toString())[0];

strres=strArr[2];


    //you'll get 13 in strArr[0]
    //you'll get Gin strArr[1]
    //you'll get true in strArr[2]

【讨论】:

【参考方案3】:
var tokens = str.Split(",");         //Splits to string[] by comma
var first = int32.Parse(tokens[0]);  //Converts first string to int
var second = tokens[1][0];           //Gets first char of the second string
var third = tokens[2];        

但请注意,您还需要验证输入

【讨论】:

这是更好的答案,但你可能会解释得更多 添加了更多的 cmets【参考方案4】:

您将需要方法String.Split('char')。此方法使用指定的字符拆分字符串。

    string str = "13,G,true";
    var arrayOfStrings=str.Split(',');

    int number = int.Parse(arrayOfStrings[0]); 

【讨论】:

【参考方案5】:

// original input
string line = "13,G,true";

//  splitting the string based on a character. this gives us
// ["13", "G", "true"]
string[] split = line.Split(',');

// now we parse them based on their type
int a = int.Parse(split[0]);
char b = split[1][0];
string c = split[2];

如果您要解析的是 CSV 数据,我会查看与您的语言相关的 CSV 解析库。对于 C#,Nuget.org 有一些不错的。

【讨论】:

以上是关于提取用逗号分隔的字符串部分的主要内容,如果未能解决你的问题,请参考以下文章

从oracle中的逗号分隔字符串中提取单词

在postgresql中将值提取到逗号分隔的字符串中[重复]

使用分隔符提取 MySQL 子字符串

使用 SQL 。从字符串'HEADER|N1000|E1001|N1002|E1003|N1004|N1005'中提取逗号分隔的数字

提取每组两个不同字符串之间的每个字符串

【js】金钱格式化(每三位逗号分隔)的方法