我在用C#分割字符串时遇到麻烦。
例如字符串:"Hello {1} World {2} example {3} today"
应该输出这样吗?
Hello World example today
我尝试使用下面的代码,它对我来说很好用,但是除了声明3 Delimiter之外,我还希望有其他方法来实现此目的。
String value = "Hello {1} World {2} example {3} today";
string strDelimitor = "{1}";
string strDelimitor1 = "{2}";
string strDelimitor2 = "{3}";
string[] lines = value.Split(new[] { strDelimitor }, StringSplitOptions.None);
string first = lines[0].ToString();
string[] second = lines[1].Split(new[] { strDelimitor1 }, StringSplitOptions.None);
string secondmsg = second[0].ToString();
string[] third = second[1].Split(new[] { strDelimitor2 }, StringSplitOptions.None);
string Thirdmsg = third[0].ToString();
string fourthmsg = third[1].ToString();
请帮助我解决这个分裂的问题。
答案 0 :(得分:4)
只需使用Regex
:
首先将其添加到您的using
指令中:
using System.Text.RegularExpressions;
然后:
string str = "Hello {1} World {2} example {3} today";
string pattern = @"\{\d+\}";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(str, replacement);
"\{\d+\}"
的意思是:大括号后跟一个或多个数字(d+
),后跟大括号。
答案 1 :(得分:1)
像这样使用String.Split方法:
string[] separators = new string[] { "{1}", "{2}", "{3}" };
string myString = "Hello {1} World {2} example {3} today";
string[] splitStrings = myString.Split( separators, StringSplitOptions.RemoveEmptyEntries );
答案 2 :(得分:1)
如果要删除,则分隔符字符串应这样做:
string[] seperator = new string[] { "{1}", "{2}", "{3}" };
string myString = "Hello {1} World {2} example {3} today";
foreach( string s in seperator )
{
myString = myString.Replace( s, "" );
}
答案 3 :(得分:1)
好的,我也想玩!您输入的字符串在方括号中的数字前后都有一个空格。我在数字后面加一个空格。然后,在执行Join时,单词之间应该留有一个空格。
string s = "Hello {1} World {2} example {3} today";
string[] splitters = { "{1} ", "{2} ", "{3} " };
string[] newS = s.Split(splitters, StringSplitOptions.None);
string Final = String.Join("",newS);
Debug.Print(Final);
要使用Debug.Print,请添加使用语句System.Diagnostics
答案 4 :(得分:1)
您可以像这样分割String
。这段代码很简单
string s = "there is a cat";
string[] words = s.Split(' ');
foreach (string word in words)
{
Console.WriteLine(word);
}
输出为:
有
是
a
猫
但是,您想要分割多个字符,然后尝试使用此字符。我们使用Regex.Split
来分隔多个字符。如果需要StringSplitOptions
,则有一个重载的方法。这将删除空字符串
string value = "cat\r\ndog\r\nanimal\r\nperson";
string[] lines = Regex.Split(value, "\r\n");
foreach (string line in lines)
{
Console.WriteLine(line);
}
输出:
猫
狗
动物
人
答案 5 :(得分:1)
您可以使用正则表达式(您将需要使用命名空间System.Text.RegularExpressions
)
using System.Text.RegularExpressions;
//(...)
Regex rgx = new Regex(@"\s?\{.\}\s?");
string result = rgx.Replace("Hello {1} World {2} example {3} today", " ");
// Hello World example today
答案 6 :(得分:0)
如果要删除所有数字,大括号,空格,并只保留纯文本,以便{14}等将被删除,可以使用此功能,但是它很丑陋
String test = "Hello {1} World {2} example {3} today";
char[] delimArray = { ' ','{','0','1','2','3','4','5','6','7','8','9', '}' };
String [] test2 = test.Split(delimArray, StringSplitOptions.RemoveEmptyEntries);
foreach( String s in test2)
{
System.Console.WriteLine(s);
}