-1

" " である文字列を分割したい12:00PM

今、私12:00は一つの部分として、そしてPM別の部分として欲しい.

そして、これらの 2 つの部分を 2 つの異なるテキストボックスに入れたいと思います。

いくつの方法でそれを行うことができますか?

4

10 に答える 10

1

これを試して

string str = "12:00pm";
int timeIndex = str.Length - 2;
string time = str.Substring(0, timeIndex);  <--- 12:00
string ampm = str.Substring(timeIndex);     <--  am/pm

また

string str = "9:00pm";
string time = new String(str.TakeWhile(c => c != 'p' && c != 'a').ToArray());
string ampm = str.Substring(str.Length - 2);

また

string str = "9:00pm";
string time = str.Replace("am", "").Replace("pm", "");
string ampm = str.Substring(str.Length - 2);
于 2013-07-10T10:27:41.993 に答える
1

12:00pmが実際に a から来ている場合DateTime、組み込みの日付形式を使用できます。

var timeStr = dateTime.ToString("hh:mm");
var amPm = dateTime.ToString("tt");

そうでない場合は、文字列から最後の 2 文字を削除するだけです。

var timeStr = "12:00pm";
var time = timeStr.Substring(0, timeStr.Length-2);
var amPm = timeStr.Substring(timeStr.Length-2);
于 2013-07-10T10:27:45.770 に答える
1

使用できますString.Split

var results = yourString.Split("p");

配列を返します。次を使用して最初の結果にアクセスできます。

results[0];

そして2つ目は:

results[1];

値を TextBox に割り当てるには、次のようにします。

TextBox1.Text = results[0];
TextBox2.Text = results[1];
于 2013-07-10T10:21:45.633 に答える
0

次のような方法String.Splitを使用できます。String.Replace

string s = "12:00pm";
string[] array = s.Split(new char[] { 'p', 'a' });
if (s.Contains("p"))
    array[1] = array[1].Replace("m", "pm");
else
    array[1] = array[1].Replace("m", "am");

TextBox1.Text = array[0];
TextBox2.Text = array[1];

これは と の両方pmで機能しamます。

于 2013-07-10T10:27:50.237 に答える
0
String ampm = date.substring(date.Length - 2, 2);
String time = date.substring(0, date.Length - 2);
于 2013-07-10T10:25:18.917 に答える
0

キャプチャ グループで正規表現を使用できます。これは .NET で行うべきだと思います。^(?<firstGroup>^.*?)(?<secondGroup>(pm|PM|am|AM))

そしてそれにアクセスします(文字列にのみ一致するものが1つあると仮定すると、非常に単純化されています)

expr.Matches(stringToSplit)[0].Groups["firstGroup"].Captures[0].Value

ちょっと往復だけど。

于 2013-07-10T10:31:42.327 に答える
0

午前/午後の文字列の正しい位置を確実に取得するには、IndexOfAny文字列メソッドを使用できます。文字列の右/左部分を取得する作業は、Substring の 2 つのバリエーションを使用して簡単に行うことができます

string test = "12:00pm";
int pos = test.IndexOfAny(new char[] {'p', 'm'});
string time = test.Substring(0, pos);
string ampm = test.Substring(pos);

textBox1.Text = time;
textBox2.Text = ampm;

(pos != -1)このコードが am/pm 仕様のない文字列に対して呼び出される可能性がある場合は、おそらく変数 pos の値をチェックする必要があります。

于 2013-07-10T10:33:32.297 に答える
0

Take()と を使用した簡単なソリューションSkip():

var time = "12:00PM";

var hours = new string(time.Take(5).ToArray());
var amPm = new string(time.Skip(5).ToArray());
于 2013-07-10T10:38:56.460 に答える
0
String data = "12:00pm";
String time = data.substring(0, 5);
String ampm = data.substring(5, 2);

ここにたくさんの例があります

于 2013-07-10T10:23:02.087 に答える
0

次のようにして、常に午前/午後を 1 つのボックスに入れ、時間を別のボックスに入れることができます。

string rawText = "12:00pm";
txtTime.Text = rawText.Substring(rawText.Length - 2);
txtAmPm.Text = rawText.SubString(0, txtTime.Text.Length);

それは午前8時などにも機能します。

于 2013-07-10T10:23:36.183 に答える