C# Разделить Строку На Другую Строку



Я использую Split() метод разделения строк, но это работает только в том случае, если вы разделяете строку символом. Есть ли способ разделить a string, С другой строкой, являющейся разделением по параметру? Я попытался преобразовать разделитель в массив символов, но не повезло.



другими словами, Я хотел бы разделить string:




THExxQUICKxxBROWNxxFOX




by xx, и возвращает массив со значениями:




БЫСТРЫЙ, КОРИЧНЕВЫЙ, ЛИС


680   9  

9 ответов:

чтобы разделить строку, вам нужно будет использовать перегрузка массива строк.

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);

есть перегрузка Сплит, которая принимает строки.

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

вы можете использовать любой из этих StringSplitOptions

  • нет - возвращаемое значение включает массив элементы, содержащие пустую строку
  • RemoveEmptyEntries - возвращаемое значение не включает элементы массива, которые содержать пустую строку

Так что если строка "THExxQUICKxxxxBROWNxxFOX",StringSplitOptions.None возвращает пустую запись в массиве для части "xxxx" while StringSplitOptions.RemoveEmptyEntries не будет.

Regex.Split(string,"xx")

Как я делаю это обычно. Конечно, вам понадобится

using System.Text.RegularExpressions;

но чем снова мне нужна эта lib все время.

есть перегрузка строку.Сплит для этого:

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);

Я вообще люблю использовать свое собственное расширение для этого:

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 


//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

однако это приведет к исключению, если Microsoft решит включить этот метод-перегрузка в более поздних версиях. Это также вероятная причина, по которой Microsoft не включила этот метод в то же время: по крайней мере одна компания, в которой я работал, использовала такое расширение во всех своих проектах C#.

можно условно определить метод во время выполнения, если он не существует.

все приведенные выше ответы верны. Я иду на один шаг дальше и заставляю C# работать для меня, определяя метод расширения на String:

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

таким образом, я могу вызвать его на любой строке простым способом, который я наивно ожидал в первый раз, когда я попытался это сделать:

"a big long string with stuff to split on".Split("g str");
string data = "THExxQUICKxxBROWNxxFOX";

return data.Replace("xx","|").Split('|');

просто выберите символ замены тщательно (выберите тот, который вряд ли будет присутствовать в строке уже)!

самый простой способ-это использовать String.Replace:

string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");

или проще:

string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");

Это тоже просто:

string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

Comments

    Ничего не найдено.