Как разбить строку на многосимвольный разделитель на С#?
Что делать, если я хочу разбить строку, используя разделитель, который является словом?
Например, This is a sentence
.
Я хочу разбить на is
и получить This
и a sentence
.
В Java
я могу отправить строку как разделитель, но как это сделать в C#
?
Ответы
Ответ 1
http://msdn.microsoft.com/en-us/library/system.string.split.aspx
Пример из документов:
string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result;
// ...
result = source.Split(stringSeparators, StringSplitOptions.None);
foreach (string s in result)
{
Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
Ответ 2
Вы можете использовать метод Regex.Split, например:
Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
Изменить. Это удовлетворяет приведенному примеру. Обратите внимание, что обычный String.Split также будет разбит на "is" в конце слова "This", поэтому я использовал метод Regex и включил границы слов вокруг "is". Обратите внимание, однако, что если вы просто написали этот пример по ошибке, то, вероятно, будет достаточно String.Split.
Ответ 3
Основываясь на существующих ответах на этот пост, это упрощает реализацию:)
namespace System
{
public static class BaseTypesExtensions
{
/// <summary>
/// Just a simple wrapper to simplify the process of splitting a string using another string as a separator
/// </summary>
/// <param name="s"></param>
/// <param name="pattern"></param>
/// <returns></returns>
public static string[] Split(this string s, string separator)
{
return s.Split(new string[] { separator }, StringSplitOptions.None);
}
}
}
Ответ 4
string s = "This is a sentence.";
string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None);
for(int i=0; i<res.length; i++)
Console.Write(res[i]);
EDIT: "is" дополняется с обеих сторон пробелами в массиве, чтобы сохранить тот факт, что вы хотите, чтобы слово "было" удалено из предложения, а слово "this" оставалось неповрежденным.
Ответ 5
Вы можете использовать String.Replace(), чтобы заменить нужную строку разделения символом, который не встречается в строке, а затем использовать String.Split для этого символа, чтобы разделить результирующую строку на тот же эффект.
Ответ 6
... Короче:
string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
Ответ 7
Или используйте этот код; (тот же: новый String [])
.Split(new[] { "Test Test" }, StringSplitOptions.None)
Ответ 8
var dict = File.ReadLines("test.txt")
.Where(line => !string.IsNullOrWhitespace(line))
.Select(line => line.Split(new char[] { '=' }, 2, 0))
.ToDictionary(parts => parts[0], parts => parts[1]);
or
enter code here
line="[email protected][email protected]";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);
ans:
tokens[0]=to
token[1][email protected][email protected]
Ответ 9
string strData = "This is much easier"
int intDelimiterIndx = strData.IndexOf("is");
int intDelimiterLength = "is".Length;
str1 = strData.Substring(0, intDelimiterIndx);
str2 = strData.Substring(intDelimiterIndx + intDelimiterLength, strData.Length - (intDelimiterIndx + intDelimiterLength));