C#返回从超过字符串末尾的位置开始的子字符串

本文关键字:字符串 返回 位置 开始 | 更新日期: 2023-09-27 18:27:02

我正试图根据用户输入将一个字符串修剪成多个子字符串。例如Console ARG1 = 'DATABASE' ARG2 = '3,2,3'该方法将DATABASE转换为newList(DAT、AB、ASE)

我目前正在处理的代码是

        string[] sizeSplit = ARG3.Split(',');
        for (int i = 0; i < sizeSplit.Length; i++)
        {
            string eachNumber = sizeSplit[i];
            int j = Int32.Parse(eachNumber);

            string splitString = pattern.Substring(0,j);
            seperatedWord.Add(splitString);
        }

但这只适用于第一个子字符串,因为第二个子字符串和后面的子字符串需要是索引为(pastPosition,j)的子字符串。正如我在标题中所说。

有人能给我指一下做这件事的方法吗?提前谢谢。

C#返回从超过字符串末尾的位置开始的子字符串

您需要跟踪的位置

int index = 0;
for (int i = 0; i < sizeSplit.Length; i++)
{
     string eachNumber = sizeSplit[i];
     int j = Int32.Parse(eachNumber);         
     string splitString = pattern.Substring(index,j);
     index += j;
     seperatedWord.Add(splitString);
}

这样试试。

添加上一个新变量。它具有子字符串的起始索引

string ARG1  = "DATABASE"; string ARG2 = "3,2,3";
int previous = 0;
string[] sizeSplit = ARG2.Split(',');
for (int i = 0; i < sizeSplit.Length; i++)
{
    string eachNumber = sizeSplit[i];
    int j = Int32.Parse(eachNumber);
    string splitString = ARG1.Substring(previous, j);
    previous +=j;
    seperatedWord.Add(splitString);
}