分割字符串-按多个字符,例如{1} {2} {3}

时间:2018-07-07 06:13:34

标签: c# asp.net .net string split

我在用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(); 

请帮助我解决这个分裂的问题。

7 个答案:

答案 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);
}