как преобразовать строку, включают числа, разделенные (-) на integer c # [duplicate]

212
задан gotqn 1 July 2015 в 07:34
поделиться

10 ответов

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);
}
265
ответ дан bruno conde 16 August 2018 в 11:25
поделиться
  • 1
    Это фактически возвращает: «Th» «предложение» с примером, приведенным в вопросе. Возможно, это то, чего он на самом деле хочет, но это не то, что он указал. – IRBMe 14 July 2009 в 18:53
  • 2
    Это всего лишь пример ... Дело в том, что существует String.Split, который принимает строки как разделители. – bruno conde 14 July 2009 в 18:57
  • 3
    Да, но это не делает то, что задает вопрос. Вы должны использовать что-то более умное, чтобы получить указанный результат. Теперь вопрос о том, какой вопрос задан на самом деле тем, чего хочет хочет , - это другой вопрос, но вопрос, заданный здесь, не может быть дан тривиально с помощью только String.Split. – IRBMe 14 July 2009 в 19:05
  • 4
    Все еще не совсем работает. Если вы включаете пробелы в слово для разделения, они не включаются в вывод. Если вы посмотрите пример, приведенный в вопросе, вы заметите, что на самом деле они включают пробелы. Разделение на & quot; "& quot; даст вам "This & quot; и "предложение" а не "This & quot; и " предложение ". Обратите внимание на тонкие пробелы в конце «This & quot; и начало «предложения». Опять же, этот ответ, вероятно, действительно интересует вопрос, но это не то, что он просил, и, повторяю, String.Split не будет его тривиально решать. – IRBMe 14 July 2009 в 19:46
  • 5
    @IRBMe вы прочитали вопрос? «Я хочу разделить на« есть ». Поэтому я получу & quot; This & quot; и " предложение ". См. Пробелы в результатах ??? Это то, что делает Сплит. – bruno conde 14 July 2009 в 20:41
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» дополняется с обеих сторон пробелами в массиве, чтобы сохранить тот факт, что вы только хотите, чтобы слово «было» удалено из предложения, и слово «это» останется нетронутым.

25
ответ дан ahawker 16 August 2018 в 11:25
поделиться
  • 1
    Конечно, это нарушает предложение «Это то, что есть». – JohnFx 14 July 2009 в 19:17

Или используйте этот код; (тот же: новый String [])

.Split(new[] { "Test Test" }, StringSplitOptions.None)
3
ответ дан Cagdas 16 August 2018 в 11:25
поделиться

Исходя из существующих ответов на этот пост, это упрощает реализацию:)

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


    }
}
29
ответ дан eka808 16 August 2018 в 11:25
поделиться
  • 1
    +1, это кричит для метода расширения. Почти глупо, что это не одна из встроенных перегрузок. – Todd Menier 16 January 2013 в 20:15
  • 2
    @ToddMenier Что значит «почти»? – mwardm 11 July 2014 в 16:01

Вы можете использовать метод 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 и включал границы слов вокруг « - ». Обратите внимание, однако, что если вы просто написали этот пример по ошибке, то, вероятно, будет достаточно String.Split .

52
ответ дан IRBMe 16 August 2018 в 11:25
поделиться
  • 1
    @ EDIT: я тоже не был уверен, но вы все равно можете использовать обычное разделение строк и просто пробелы на обеих сторонах, если его целью является ТОЛЬКО удалить слово & quot; is & quot ;. – ahawker 14 July 2009 в 18:57
  • 2
    Это тоже не работает (по крайней мере, не без больших усилий), потому что вы не знаете, должно ли пространство идти слева, справа или оба, не зная положений слова, которое было разделено на строку , – IRBMe 14 July 2009 в 19:03
  • 3
    Слишком сложно, поскольку String.Splity позволяет вам разбить на строку уже ... – Ed S. 14 July 2009 в 19:51
  • 4
    Я уже обращался к этому в своем редактировании с моим ответом в комментарии выше и в 3 комментариях к другому ответу. String.Split не работает для примера, представленного в вопросе. Я больше не буду повторять, объясняя почему. Вы можете прочитать все остальные комментарии, если хотите узнать. – IRBMe 14 July 2009 в 19:58
  • 5
    обратите внимание, что метод разложения регулярных выражений не удаляет предистриметр и трейлинг-разделитель переменной ... :( – melaos 7 October 2011 в 02:53

... Короче:

string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
6
ответ дан ParPar 16 August 2018 в 11:25
поделиться

Вы можете использовать String.Replace (), чтобы заменить нужную строку разделения символом, который не встречается в строке, а затем использовать String.Split для этого символа, чтобы разделить результирующую строку на тот же эффект.

4
ответ дан Paul Sonier 16 August 2018 в 11:25
поделиться
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="to=xxx@gmail.com=yyy@yahoo.co.in";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);

ans:
tokens[0]=to
token[1]=xxx@gmail.com=yyy@yahoo.co.in
0
ответ дан Prabu 16 August 2018 в 11:25
поделиться

Вот функция расширения для разделения с разделителем строк:

public static string[] Split(this string value, string seperator)
{
    return value.Split(new string[] { seperator }, StringSplitOptions.None);
}

Пример использования:

string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
0
ответ дан SteveD 16 August 2018 в 11:25
поделиться
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));
-5
ответ дан Susmeet Khaire 16 August 2018 в 11:25
поделиться
  • 1
    Перед отправкой кода вам, вероятно, следует попробовать запустить его с помощью компилятора, если только вы не указали, что у вас его нет. В первой строке отсутствует точка с запятой, а str1 & amp; str2 не определены. Не говоря уже о том, что код действительно не работает, как хотел OP. Этот код разбивает его на "Th" и " намного проще ". – mandreko 18 August 2011 в 20:36
Другие вопросы по тегам:

Похожие вопросы: