-1

我想拆分一个字符串“ 12:00PM”。

现在我想12:00作为一部分和PM另一部分。

我想把这两个部分放到两个不同的文本框中。

我可以通过多少种方式做到这一点?

4

10 回答 10

1

您可以使用String.Split

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

它返回一个数组。您可以使用以下方法访问第一个结果:

results[0];

第二个是:

results[1];

要将值分配给 TextBox,您可以执行以下操作:

TextBox1.Text = results[0];
TextBox2.Text = results[1];
于 2013-07-10T10:21:45.633 回答
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实际上来自 aDateTime您可以为此使用内置日期格式,例如

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 回答
0
String data = "12:00pm";
String time = data.substring(0, 5);
String ampm = data.substring(5, 2);

这里有很多例子

于 2013-07-10T10:23:02.087 回答
0

你可以做这样的事情,总是把上午/下午放在一个盒子里,把时间放在另一个盒子里:

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

这也适用于上午 8:00 等。

于 2013-07-10T10:23:36.183 回答
0
String ampm = date.substring(date.Length - 2, 2);
String time = date.substring(0, date.Length - 2);
于 2013-07-10T10:25:18.917 回答
0

您可以使用String.SplitString.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];

这适用于pmam

于 2013-07-10T10:27:50.237 回答
0

您可以使用带有捕获组的正则表达式,认为这应该在 .NET 中执行^(?<firstGroup>^.*?)(?<secondGroup>(pm|PM|am|AM))

并访问它(非常简单,假设它仅在字符串中有一个匹配项)

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

虽然有点往返。

于 2013-07-10T10:31:42.327 回答
0

为了确保获得 am/pm 字符串的正确位置,您可以使用IndexOfAny字符串方法,然后使用Substring的两种变体很容易抓取字符串的右/左部分

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()使用and 的简单解决方案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 回答