Как разделить строку, если вы знаете начальную и конечную точку, но не середину в asp.net C # - PullRequest
0 голосов
/ 20 декабря 2018

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

Вот единственный способ, которым я могу придумать, чтобы точно показать пример (пожалуйста, игнорируйте тот факт, что это HTML):

string text = 
"<ul>
<li>keep this text</li>
<li class=Known  unknown text  </li>
<li>keep this text</li>
</ul>";  

string [] splitPerams = {"","<li class=Known (im guessing a regex here) 
</li>"}

string [] results = 
text.Split(splitPerams,System.StringSplitOptions.RemoveEmptyEntries);

output:

"<ul>
<li>keep this text</li>

<li>keep this text</li>
</ul>";

Я знаю, что есть много похожих вопросов по этому предмету, но все они на разных языках, и я не могу понять, как реализовать логику в c #.

РЕДАКТИРОВАТЬ: Я думаю, мне не разрешено удалять это, поэтому я сделаю все возможное, чтобы просто перефразировать это полностью для лучшего понимания.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Если по какой-то причине это кому-то помогает, вот способ удалить / вытащить неизвестный фрагмент текста из строки, если вы знаете часть до и после неизвестного раздела.

string originalText = "Hi my name is Mr. Smith from the USA.";

string[] topPull = { "", "Mr." };
string[] bottomPull = { "from", "" };
string result;

string[] topPage = originalText.Split(topPull,StringSplitOptions.RemoveEmptyEntries);
string[] bottomPage = 
originalText.Split(bottomPull,StringSplitOptions.RemoveEmptyEntries);


//topPage[0] gives all text above topPull, but not topPull it's self
//bottomPull[1] gives all text below bottomPull, but not bottomPull it's self
//now that we have grabbed all the text above and below our known sections we need to 
//add in the known sections themselves, ie topPull and bottomPull

result = topPage[0] + topPull[1] + " " + bottomPull[0] + bottomPage[1];

output:«Привет, меня зовут мистер из США».


Если вы хотите сохранить только средний текст, вы можете сделать это следующим образом

string originalText = "Hi my name is Mr. Smith from the USA.";

string[] topPull = { "", "Mr." };
string[] bottomPull = { "from", "" };
string result;

string[] topPage = originalText.Split(topPull,StringSplitOptions.RemoveEmptyEntries);
string[] bottomPage = 
topPage[1].Split(bottomPull,StringSplitOptions.RemoveEmptyEntries);
result = bottomPage[0];

output: "Smith"; * +1010 *

0 голосов
/ 20 декабря 2018

Звучит так, как будто вам нужен не разделение, а внешний конец строки, поэтому использование substring должно сделать это.Поскольку вы знаете, с каких символов начинается раздел удаления, будет полезно использовать indexOf.

var str = "Hi My name is Mr. ???? from the usa.";
var newStr = str.Substring(0, str.IndexOf("Mr."));

Поэкспериментируйте с этим, чтобы получить нужную длину.

Ссылки:

https://docs.microsoft.com/en-us/dotnet/api/system.string.substring?view=netframework-4.7.2

https://docs.microsoft.com/en-us/dotnet/api/system.string.indexof?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...