使用子字符串从字符串中删除单词

时间:2013-06-05 19:37:50

标签: c# string

是否有一种方法可以从字符串中删除一定数量的字符,将删除的字符放入单独的字符串中并使原始x字符数量更短?

我需要将一个字符串解析成10个单独的字符串,每个字符串长10个字符。我希望能够像这样做一些简单的事情,但我不知道在C#中是否有类似这样的方法

string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    errorCodes[i] = retrievedMessage.removeFromSubstring(0, 10);
}

4 个答案:

答案 0 :(得分:1)

修改

现在经过测试,似乎对我来说很好用

        var errorCodes = "longstringgggggggggggggggggggggggggg";
        var count = 10;
        List<string> s = new List<string>();
        for (int i = 0; i < errorCodes.Length; i += count)
        {
            if (i + count > errorCodes.Length)
                count = errorCodes.Length - i;
            s.Add(errorCodes.Substring(i, count));
        }

        foreach (var str in s)
            Console.WriteLine(str);

        Console.ReadLine();

答案 1 :(得分:1)

你可以试试这个:

string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    errorCodes[i] = retrievedMessage.Substring(0, 10);
    retrievedMessage = retrievedMessage.Substring(10);
}

retrievedMessage = retrievedMessage.Substring(10);将有效删除原始字符串中的前10个字符。这样,在每次迭代中,您将能够使用前10个字符并将它们分配给errorCodes[i]

您也可以尝试避免使用子字符串:

string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    errorCodes[i] = retrievedMessage.Substring(i*10, 10);
}

答案 2 :(得分:1)

这应该对你有用

string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    errorCodes[i] = retrievedMessage.Substring(10*i, 10);
}

这是一个将从string retrievedMessage

中删除的选项
string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    //option to remove from string
    errorCodes[i] = retrievedMessage.Substring(0, 10);
    retrievedMessage = retrievedMessage.Remove(0,10);  //will remove from string
}

答案 3 :(得分:0)

与其他答案相同的基本概念,但稍微检查变量字符串长度。如果你知道你的字符串长度总是100个字符,那么使用一个更简单的答案。

string[] errorCodes = new string[10];
for (int i = 0; i < errorCodes.Length; i++)
{
    int startIndex = i * 10;
    if (retrievedMessage.Length > startIndex)
    {
        int length = 10;
        if (retrievedMessage.Length < (startIndex + length))
        {
            length = retrievedMessage.Length - startIndex;
        }
        errorCodes[i] = retrievedMessage.Substring(startIndex, length);
    }
}

注意:由于errorCodes始终以10的长度进行实例化,因此如果retrieveMessage的长度为&lt; = 90,则该字符串将为空字符串。如果您期望变长,则最好使用{{1}而不是List<string>