如何在程序中读取文件中两个数字之间的数字

时间:2013-12-09 18:03:00

标签: c# string substring

我试图在23 23 23和00 00之间得到号码。

例如,我在文本文件中的行为23 23 23 45 45 00 00。 我怎么能得到45 45字符串。 我试过

public static string getBetween(string strSource, string strStart, int bytes)
{
    int Start = 0, End = 0;
    {
        Start = strSource.IndexOf(strStart, 0) + strStart.Length;
        End = Start + (bytes * 3) - 2;     //because we know the size of string
        return strSource.Substring(Start, End - Start);
    }
}

6 个答案:

答案 0 :(得分:0)

您的End必须是:

End = strSource.IndexOf("00 00");

答案 1 :(得分:0)

例如:

string x = "23 23 23 45 45 00 00";

const string firstPattern = "23";
const string lastPattern = "00";

int idx1 = x.LastIndexOf(firstPattern);
int idx2 = x.IndexOf(lastPattern);

string result = (x.Substring(idx1 + firstPattern.Length, idx2 - idx1 - firstPattern.Length)).Trim();

答案 2 :(得分:0)

我认为这个实现更灵活,因为不假设固定的开始/结束字符串长度,但引入了更复杂的方法,因为它使用正则表达式。

public static string getBetween(string input, string start, string end)
{
    var match = Regex.Match(input, String.Format("{0}(.*?){1}", 
                            Regex.Escape(start), Regex.Escape(end)));
    if (match.Success)
        return match.Groups[1].Value;
    return null;
}

答案 3 :(得分:0)

很难说这里的规则是什么,我猜你想要“第4列和第5列”。

string stringScr = "23 23 23 45 45 00 00";

string [] cols = stringScr.Split(" ");

string result=cols[3]+" "+cols[4];

请注意,这种方式也会将它们视为“个人”号码,我认为这就是您想要的。

答案 4 :(得分:0)

static void Main(string[] args)
    {           
        String str = "23 23 23 45 45 00 00";
        int index1=str.LastIndexOf("23");
        int index2 = str.IndexOf("00");
        index2 -= 3;
        str=str.Substring(index1+3, index2 - index1).Trim();
    }

答案 5 :(得分:0)

这将允许您在空格分隔列表中获取第二个(或任何其他)集。

    /// <summary>
    /// Gets a specified set of values from a string
    /// </summary>
    /// <param name="set">The 1-based numbered set.  To get the second set, pass 2.</param>
    /// <param name="str">A space-separated string with all of the values</param>
    /// <returns>A space-separated string with the specified set of values.</returns>
    private static string GetNthSet(int set, string str)
    {
        string output = string.Empty;
        string[] parts = str.Split(' ');
        List<string> used = new List<string>();
        foreach (var part in parts)
        {
            if(!used.Contains(part))
            {
                used.Add(part);
            }
            if(used.Count == set)
            {
                output += part + " ";
            }
            else if(used.Count > set)
            {
                break;
            }
        }
        return output.Trim();
    }