想要将字符串分成两部分,并使用c#将每个部分保存在不同的变量中
本文关键字:存在 个部 保存 变量 字符串 两部分 | 更新日期: 2023-09-27 18:21:43
我想拆分一个"12:00PM
"字符串。
现在我想要12:00
作为一个部分,PM
作为另一个部分。
我想把这两个部分放在两个不同的文本框中。
我能用多少方法做到这一点?
您可以使用String.Split
:
var results = yourString.Split("p");
它返回一个数组。您可以使用访问第一个结果
results[0];
第二个由:
results[1];
要将值分配给TextBox,可以执行以下操作:
TextBox1.Text = results[0];
TextBox2.Text = results[1];
如果12:00pm
实际上来自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);
试试这个
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);
String data = "12:00pm";
String time = data.substring(0, 5);
String ampm = data.substring(5, 2);
这里有很多例子
你可以这样做,总是把上午/下午放在一个盒子里,把时间放在另一个盒子:
string rawText = "12:00pm";
txtTime.Text = rawText.Substring(rawText.Length - 2);
txtAmPm.Text = rawText.SubString(0, txtTime.Text.Length);
这也适用于上午8:00等。
String ampm = date.substring(date.Length - 2, 2);
String time = date.substring(0, date.Length - 2);
您可以使用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
都有效。
您可以将regex与捕获组一起使用,认为这应该在.NET ^(?<firstGroup>^.*?)(?<secondGroup>(pm|PM|am|AM))
中完成
访问它(非常简单,假设它只在字符串中有一个匹配项)
expr.Matches(stringToSplit)[0].Groups["firstGroup"].Captures[0].Value
不过有点往返。
为了确保获得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;
如果有可能为没有am/pm规范的字符串调用此代码,则可能需要检查变量pos (pos != -1)
的值
使用Take()
和Skip()
的简单解决方案:
var time = "12:00PM";
var hours = new string(time.Take(5).ToArray());
var amPm = new string(time.Skip(5).ToArray());