Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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#_String - Fatal编程技术网

C#如何获得字符串中字符的长度

C#如何获得字符串中字符的长度,c#,string,C#,String,我有一个[]字符串重试,其中有一些字符串,比如: A2、A3、H9、ASD123等。它们都在字母和整数之间有间隔。现在我需要知道字母部分有多长(在这个例子中“qwe 2”字母长度是3,整数部分是2)。稍后我将使用指定索引中的.substring,字母部分在该索引处结束,整数部分在该索引处开始 string[] s = new string[5]; List<string> retry = new List<string>(); int max = 1; for (int

我有一个
[]字符串重试
,其中有一些字符串,比如: A2、A3、H9、ASD123等。它们都在字母和整数之间有间隔。现在我需要知道字母部分有多长(在这个例子中“qwe 2”字母长度是3,整数部分是2)。稍后我将使用指定索引中的.substring,字母部分在该索引处结束,整数部分在该索引处开始

string[] s = new string[5];
List<string> retry = new List<string>();
int max = 1;

for (int i = 0; i < s.Length; i++)
{
    s[i] = Console.ReadLine();
}

Console.WriteLine(" ");
Array.Sort(s);

for (int j = 0; j < s.Length; j++)
{
    if (j > 0)
    {
        if (s[j] == s[j - 1])
        {
            max++;

            if (retry.Any(x => x.Contains(s[j])))
            {
                retry.Add(s[j] + " " + max);
            }
            else
            {
                if (j <= s.Length - 1)
                {
                    if (s[j-1] != s[j])
                    {
                        retry.Add(s[j] + " " + max);
                    }
                    else
                    {
                        retry.Add(s[j] + " " + max);
                    }
                }
            }
        }
        else
        {
            max = 1;
        }
    }
}

for (int j = 0; j < retry.ToArray().Length; j++)
{
    for (int k = j + 1; k < retry.ToArray().Length; k++)
    {
        var a1=retry[j].Substring(0,1);
        var a2 = retry[k].Substring(0,1);

        if(a1==a2)
        {
            var b1 = retry[j].Substring(2);
            var b2 = retry[k].Substring(2);

            if(int.Parse(b1)>int.Parse(b2))
            {
                retry.Remove(a2 + " "+ b2);
            }
            else
            {
                retry.Remove(a1 + " " + b1);
            }
        }
    }

    Console.WriteLine(retry[j]);
}

Console.ReadKey();
string[]s=新字符串[5];
列表重试=新建列表();
int max=1;
对于(int i=0;i0)
{
如果(s[j]==s[j-1])
{
max++;
if(retry.Any(x=>x.Contains(s[j]))
{
重试。添加(s[j]+“”+max);
}
其他的
{
if(j int.Parse(b2))
{
重试。删除(a2+“”+b2);
}
其他的
{
重试。删除(a1+“”+b1);
}
}
}
Console.WriteLine(重试[j]);
}
Console.ReadKey();
这只适用于1个字母。

那么

string[] test = new [] { "qwe 2", "a 2", "b 3", "asd 123" };

foreach (var s in test)
{
    var lastLetterIndex = Array.FindLastIndex(s.ToCharArray(), Char.IsLetter);
    var lastNumberIndex = Array.FindLastIndex(s.ToCharArray(), Char.IsNumber);
    Console.WriteLine(s);
    Console.WriteLine("Letter Length : " + (lastLetterIndex + 1));
    Console.WriteLine("Number Length : " + (lastNumberIndex - lastLetterIndex));
}
Console.ReadKey();

这将遍历所有字符串并计算字符的长度,并存储数字的值及其索引。请注意,此信息在每次迭代时都会丢失,但如果您需要这些信息的时间超过迭代的持续时间,我会让您担心如何存储这些信息

int letterLength = 0, number = 0, index = 0;
string[] testString = { "a 2", "a 3", "h 9", "asd 123", "sw", "swa23", "swag 2464" };

foreach (string str in testString)
{
    letterLength = 0;
    index = -1;
    int i = 0;

    for (; i < str.Length; i++)
    {
        char c = str[i];
        if (Char.IsLetter(c)) letterLength++;
        else if (Char.IsNumber(c)) break;
    }

    StringBuilder strBuilder = new StringBuilder();

    for (; i < str.Length; i++)
    {
        char c = str[i];

        if (index == -1) index  = str.IndexOf(c);
        strBuilder.Append(c);

        number = Int32.Parse(strBuilder.ToString());
    }

    Console.WriteLine($"String: {str}\nLetter Length: {letterLength} Number: {number} Index: {index}\n");
}
int-letterLength=0,number=0,index=0;
string[]testString={“a2”、“a3”、“h9”、“asd123”、“sw”、“swa23”、“swag2464”};
foreach(testString中的string str)
{
字母长度=0;
指数=-1;
int i=0;
对于(;i

下面的代码应该得到预期的结果:

string [] entries =  {"xyz 1","q 2","poiuy 4"};
for(int i=0;i<entries.Length;i++)
{
    var parts = entries[i].Split(' ');
    var txtCount = parts[0].Length;
    Console.WriteLine(String.Format("{0} {1}", txtCount, parts[1]));
}
string[]条目={“xyz 1”、“q 2”、“poiuy 4”};

对于(int i=0;我这里的结局是什么?这听起来像是一个用正则表达式很容易解决的问题。拆分而不是使用子字符串。是的,它甚至不是一个解决方案,只是想向您展示我想要实现的目标,而是以某个整数作为起点,这个整数将取决于chars@Assim这就是我的意思吗你想要吗?你在修改后的问题中发布的代码做了很多事情,很少与你的问题相关。事实上,很难说代码的哪一部分与你的问题相关。为什么不试着举一个简单的例子,如?当你在做的时候,读一些其他的评论。@KrishnaDhungana实际上是good足以回答我认为是你的问题。嗯,从我对要求的理解来看,他想要字母的长度(答案中这部分是正确的),但直接是结尾的数字,而不是“数字的长度+空格部分”。这实际上正确地回答了问题(我理解了这个问题,我想应该读几遍)