1
private static string SetValue(string input, string reference)
{
    string[] sentence = input.Split(' ');
    for(int word = 0; word<sentence.Length; word++)
    {
        if (sentence[word].Equals(reference, StringComparison.OrdinalIgnoreCase))
        {
            return String.Join(" ", sentence.subarray(word+1,sentence.Length))
        }
    }
}

どうすればsentence.subarray(word+1,sentence.Length)簡単に達成できますか、または別の方法でこれを行うことができますか?

4

4 に答える 4

5

String.Joinこれ専用のオーバーロードがあります。

return String.Join(" ", sentence, word + 1, sentence.Length - (word + 1));
于 2013-02-18T10:56:43.570 に答える
1

string.Join() 関数から独立した Subarray ソリューションを厳密に探していて、Linq をサポートする .NET のバージョンを使用している場合は、次のことをお勧めします。

sentence.Skip(word + 1);
于 2013-02-18T11:00:54.513 に答える
1

次のようにオーバーロードWhereを使用できindexます。

return string.Join(" ", sentence.Where((w, i) => i > word));
于 2013-02-18T11:17:17.207 に答える
0

SkipWhileまたは、 for ループの代わりに使用することもできます。

private static string SetValue(string input, string reference)
{
    var sentence = input.Split(" ");
    // Skip up to the reference (but not the reference itself)
    var rest = sentence.SkipWhile( 
        s => !s.Equals(reference, StringComparison.OrdinalIgnoreCase));
    rest = rest.Skip(1); // Skip the reference
    return string.Join(" ", rest);
}
于 2013-02-18T10:59:52.503 に答える