Member 12119075 Ответов: 3

Как мне разделить свою строку на равные части и сохранить ее в переменной


строковое значение="monobala";

Мне нужно сохранить моно и бала в другую переменную или в массив

Что я уже пробовал:

значение.сплит(стоимость.длина>2)
Я не знаю точно, что делать

3 Ответов

Рейтинг:
20

Kenneth Haugland

Для четных строк это легко:

var MyString = "blabla";
var first = MyString.Substring(0, (int)(MyString.Length / 2));
var last = MyString.Substring((int)(MyString.Length / 2), (int)(MyString.Length / 2));

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


Frank R. Haugen

Я не эксперт, но это не C#, не так ли?

Kenneth Haugland

Ну а на VS 2015 он будет компилироваться как C#, хотя не знаю, на чем вы работаете :смейтесь:

[no name]

+5

Рейтинг:
15

BillWoodruff

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

Однако это легко сделать. Вот один из способов сделать это:

string bar = "|";
string[] splitStr = new string[] {bar};
string str = "12345678";

string[] byHalf = str.Insert(str.Length / 2, bar).Split(splitStr,StringSplitOptions.RemoveEmptyEntries);
Конечно, этот метод легко спутать, если строка, которую вы разделяете, имеет символ, который вы используете для ее разделения.

Вот пример с использованием класса StringBuilder для вас, чтобы учиться:
string str = "12345678";
StringBuilder sb = new StringBuilder(str);
int half1 = sb.Length/2;
int half2 = sb.Length - half1;
char[] halfOne = new char[half1];
char[] halfTwo = new char[half2];
sb.CopyTo(0, halfOne, 0, half1);
sb.CopyTo(half1, halfTwo, 0, half2);
string[] results = new string[]
{
   new string(halfOne), new string(halfTwo)
};
sb.Clear();
Поймите, что происходит на каждом этапе этого процесса, и вы узнаете что-то, что будет полезно в будущем, когда вы находитесь в сценарии программирования, где вам придется иметь дело с "тяжелым" использованием строк :)


Рейтинг:
1

Member 13752815

Строительство на @Kenneth Hauglandэто ответ для нечетных струн (для вас, ленивых людей - таких, как я).

var value = "monobala";
var firstHalfLength = (int)(value.Length / 2);
var secondHalfLength = value.Length - firstHalfLength;
var splitPhone = new[] 
    {
        value.Substring(0, firstHalfLength),
        value.Substring(firstHalfLength, secondHalfLength)
    };