Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数组中存储字符串中的整数值_C#_Arrays_Wpf_String_Integer - Fatal编程技术网

C# 在数组中存储字符串中的整数值

C# 在数组中存储字符串中的整数值,c#,arrays,wpf,string,integer,C#,Arrays,Wpf,String,Integer,在中,我提到我正在处理包含独立的整数值的字符串,例如:“18 37 237”。话虽如此,在我的程序中,我需要对这些整数进行单独访问,以便将它们打印到文件中。我猜最好的方法是将它们存储在整数数组中,大小取决于字符串中整数的数量 以下是我目前在这个问题上的目标: -根据string -使用int加载数组(可能使用某种Regex方法) 我的问题是,我将如何编码这些目标?在解决了上述目标后,我应该会没事的 更新:为了澄清混淆,我想指出,我的所有字符串都包含其他非数字字符,其中大多数实际上看起来像:“Sa

在中,我提到我正在处理包含独立的
整数
值的
字符串,例如:
“18 37 237”
。话虽如此,在我的程序中,我需要对这些
整数进行单独访问,以便将它们打印到文件中。我猜最好的方法是将它们存储在
整数数组中,大小取决于
字符串中
整数的数量

以下是我目前在这个问题上的目标:

-根据
string

-使用
int
加载
数组
(可能使用某种
Regex
方法)

我的问题是,我将如何编码这些目标?在解决了上述目标后,我应该会没事的

更新:为了澄清混淆,我想指出,我的所有字符串都包含其他非数字字符,其中大多数实际上看起来像:
“SampleText 12 23 34”
。很抱歉最初没有清除此代码。

您可以使用以下代码:

var ints = str.Split(' ').Select(x => int.Parse(x)).ToArray();

我的方法是使用
String.Split
int.TryParse

string[] strings = myString.Split( new string[]{ " " }, StringSplitOptions.RemoveEmptyEntries );
int[] ints = new int[ strings.Length ];
for( int i = 0; i < ints.Length; ++i )
{
    if( !int.TryParse( strings[i], out ints[i] )
    {
          // error
    }
}
string[]strings=myString.Split(新字符串[]{”“},StringSplitOptions.RemoveEmptyEntries);
int[]ints=新的int[strings.Length];
对于(整数i=0;i<整数长度;++i)
{
if(!int.TryParse(字符串[i],out int[i])
{
//错误
}
}
string s=“18 37 SomeText 237”;
字符串[]resultOfSplit=s.Split(“”);
List intList=List();

对于(var i=0;i,如果您确实需要一个数组,并且您的整数总是以空格分隔的:

string[] seperateInts = testString.Split(' ');
int[] intArray = new int[seperateInts.Length];

for (int i = 0; i < seperateInts.Length; i++)
   int.TryParse(seperateInts[i], out intArray[i]);
string[]separateInts=testString.Split(“”);
int[]intArray=新的int[separateInts.Length];
for(int i=0;i
列表可能是更好的解决方案:

List<int> intList = new List<int>();
foreach (string s in testString.Split(' ');
{
   int parsedInt = 0;

   //Avoid bad ints
   if (int.TryParse(s, out parsedInt))
      intList.Add(parsedInt);
}
List intList=new List();
foreach(testString.Split(“”)中的字符串s);
{
int parsedInt=0;
//避免不好的干扰
if(内部锥虫(s,外部解析力))
intList.Add(parsedInt);
}

此正则表达式将实现您所期望的功能

var subject = "18 37 237";
var regex = new Regex(@"\d+");
var myInts = regex.Matches(subject)
         .Cast<Match>()
         .Select(x=> int.Parse(x.Value))
         .ToArray();
var subject=“18 37 237”;
var regex=new regex(@“\d+”);
var myInts=regex.Matches(主题)
.Cast()
.Select(x=>int.Parse(x.Value))
.ToArray();

在使用int.Parse之前,您可能希望筛选序列:

var ints = str
           .Split()
           .Where(x => x.All(char.IsDigit))
           .Select(int.Parse)
           .ToArray();
char.IsDigit
通常是一个很好的选项,但它允许所有数字,而不仅仅是拉丁数字(从0到9),如果您想只允许从
0
9
的数字,这里有一个更可取的方法:

var digits = new[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

var ints = str
          .Split()
          .Where(x => x.All(digits.Contains))
          .Select(int.Parse)
          .ToArray();

如果有一个无效字符,例如一个字母,它将抛出一个异常。@Selman22:那么你是说除了整数之外还有其他字符吗?@FlatEric:is
ints
充当数组吗?@eric我是说如果字符串中有非数字字符,那么int.Parse方法将抛出一个异常FormatException@Eric达累斯萨拉姆之后k、 yes ints在这里是一个整数数组(只是其他语法)@Ericafterdark您不断添加注释,说明它需要处理字符串中的非整数。请更新问题,使其更具体。事实上,您的问题使字符串看起来格式良好,只包含整数。“我正在处理包含独立整数值的字符串,例如:
“18 37 237”
“我需要一个临时输出变量吗?您的代码看起来很好,但我以前从未见过使用的Split()重载!@lordtakera我想,它应该是一个
新字符[]{'}”
但是您想删除空条目,所以不应该只使用
拆分(“”)
唯一的问题是我的字符串有其他非数字字符,例如:
“Hello 23 34 23”
。对于它们,您想要0(或任何其他默认数字,比如-1)吗要添加还是应该跳过?它们应该被跳过你需要数组吗?列表对你的情况不起作用吗?想一想,那可能没问题,出于某种原因,我只是先想到数组。那意味着我不需要转换它,对吗?这甚至对包含非数字字符的字符串有效吗s、 像这样:
“你好12 23 34”
var digits = new[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

var ints = str
          .Split()
          .Where(x => x.All(digits.Contains))
          .Select(int.Parse)
          .ToArray();