私は文字列を持っています:
string mystring="part1, part2, part3, part4, part5";
最初に分割せずに最初の 3 つの要素を返すにはどうすればよいですか? このように:
string newstring="part1, part2, part3";
私は文字列を持っています:
string mystring="part1, part2, part3, part4, part5";
最初に分割せずに最初の 3 つの要素を返すにはどうすればよいですか? このように:
string newstring="part1, part2, part3";
次を使用して最初の 3 つを取得できます。
RegEx r = new RegEx(@"(\S+, \S+, \S+), \S+");
正規表現を記述するためのより良い方法があると確信していますが、基本的な入力に対してはそれでうまくいくと思います。
3 番目のコンマのインデックスを見つけて、部分文字列を取得してみてください。
例
void Main()
{
string mystring="part1, part2, part3, part4, part5";
int thirdCommaIndex = IndexOf(mystring, ',', 3);
var substring = mystring.Substring(0,thirdCommaIndex-1);
Console.WriteLine(substring);
}
int IndexOf(string s, char c, int n)
{
int index = 0;
int count = 0;
foreach(char ch in s)
{
index++;
if (ch == c)
count++;
if (count == n )
break;
}
if (count == 0) index = -1;
return index;
}
これにより、文字列が解析され、3 番目のコンマが検索され、それ以降のすべてが破棄されます。
string mystring = "part1, part2, part3, part4, part5";
UInt16 CommasFound = 0;
UInt16 Location = 0;
for (Location = 0; (CommasFound < 3) &&
(Location < mystring.Count()); Location++)
if (mystring[Location].Equals(','))
CommasFound++;
if (CommasFound == 3)
{
string newstring = mystring.Substring(0, Location-1);
}
else { // Handle the case where there isn't a third item
}