-1

私はこのような文字列を持っています1234ABCD-1A-AB。私は string[] セパレーターにセパレーターを持っています。文字列の長さまでループしています。を取得したいですsubstring。ループ内で私はコードの下に書いています

string tempVar = test.Substring(0, test.IndexOf("'" + separator+ "'"));

私もこんな感じでやってみました

string tempVar = String.Join(",", test.Split(',').Select(s => s.Substring(0, s.IndexOf("'" + separator+ "'"))));

これを使用すると、Index should not be less than 0 というエラーが発生します。ループは 2 回しか実行されません。これは、セパレーターに基づくループであり、文字列に 2 つのセパレーターがあるためです。

説明させてください:

セパレーターのループが2回しか実行されないため、2つのセパレーターの1つは9番目の位置で、もう1つは14番目のポジショニングです。

string[] test1 = test.Split("'" + separator+ "'");

次のステップでは、このような次のプロセスに 1 つの文字列値を渡します

string temp = test1[i].ToString();

これで、2 つの文字列しか取得できず、ループ内で 3 番目の値も取得1234ABCD1Aたいと考えています。そのため、分割を使用するよりも部分文字列を使用することを考えました。

出力は次のようになります。

first time: 1234ABCD

second time: 1A

third time: AB

4

7 に答える 7

2

分割機能を使用します。

string s = "1234ABCD-1A-AB";
string[] parts = s.Split('-');

それから:

s[0] == "1234ABCD"
s[1] == "1A"
s[2] == "AB"

現在更新されている要件に基づいて、次のことを試してください。

string input = "1234ABCD-1A-AB";
char separator = '-';

string[] parts = input.Split(separator);

// if you do not need to know the item index:
foreach (string item in parts)
{
    // do something here with 'item'
}

// if you need to know the item index:
for (int i = 0; i < parts.Length; i++)
{
    // do something here with 'item[i]', where i is 
    // the index (so 1, 2, or 3 in your case).
}
于 2013-04-08T10:21:54.507 に答える
2

Splitセパレーターと一緒に使用して'-'、返された にアクセスできますstring[]

string[] parts = test.Split('-');
string firstPart  = parts[0];
string secondPart = parts.ElementAtOrDefault(1);
string thirdPart  = parts.ElementAtOrDefault(2);

デモ

于 2013-04-08T10:25:29.087 に答える
0

String.Split()経由で非常に簡単:

string t = "1234ABCD-1A-AB";
string[] tempVar = t.Split('-');

foreach(string s in tempVar)
{
     Console.WriteLine(s);
}
Console.Read();

版画:

1234ABCD 1A AB

于 2013-04-08T10:25:30.583 に答える
0

String.Split()を使用できます:

string str = "1234ABCD-1A-AB";
string[] splitted = str.Split('-');
/* foreach (string item in splitted)
{
    Console.WriteLine(item);
}*/

次のように設定できます。

 string firstPart = splitted.FirstOrDefault();
 string secondPart = splitted.ElementAtOrDefault(1);
 string thirdPart = splitted.ElementAtOrDefault(2);
于 2013-04-08T10:25:36.773 に答える
0

インデックスだけが欠けていました

string tempVar = test.Substring(0, test.IndexOf(separator[0].ToString()));
于 2013-04-09T06:03:39.277 に答える