Найти подстроку в строке с помощью С#

У меня есть строка, похожая на SMITH 09-15 # 4-01H6 FINAL 07-02-2011.dwg, и мне нужно получить все до слова FINAL, включая пробел перед F. Таким образом, выход будет SMITH 09-15 # 4-01H6. Как я могу это получить? String.substring? регулярное выражение? большое спасибо

Ответ 1

IndexOf ( "FINAL" ) получит индекс FINAL. Затем получим подстроку от 0 до этого индекса.

Обновление: не забудьте указать правильную опцию StringComparison.

Ответ 2

Использование метода String.Substring()

String a = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"
String b = a.Substring(0, a.IndexOf("FINAL"));

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

Ответ 3

В следующем примере cuttedOne будет равен "SMITH 09-15 # 4-01H6".

string yourString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
string cuttedOne = yourString.Substring(0, yourString.LastIndexOf("FINAL"));

Вам нужно использовать LastIndexOf вместо IndexOf; в противном случае, если вход "CARFINALTH 09-15 # 4-01H6 FINAL 07-02-2011.dwg", вы получите результат "CAR".

Ответ 4

Регулярное выражение, вероятно, более убито, просто String.Substring как:

string original = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
int pos = original.IndexOf("FINAL");
string new = original.Substring(0, pos);

Ответ 5

Попробуйте следующее:

string data = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
string result = data.Substring(0, data.IndexOf("FINAL"));

Ответ 6

Это должно сделать это за вас:

string str = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg"
string substring = str.Substring(0, str.IndexOf("FINAL"))

В приведенном выше коде подстрока начинается с индекса 0, а затем идет длина местоположения "ЗАВЕРШИТЬ" (начало char)

Ответ 7

Только для этой строки вы можете найти индекс F и использовать String.Substring(0,indexofF).

Код, подобный этому

private static int ReturnIndexOfAGivenCharacterInAString(string str, string s)
{
  int index = str.IndexOf(s);
  return index;
}

private static string ReturnSubStringOfAGivenStringByLength(string str, string s)
{
  int indexOfS = ReturnIndexOfAGivenCharacterInAString(str,s);
  string subString = str.Substring(0,indexOfS);
  return subString;    
}
private static string ReturnSubStringOfMyString()
{
  string myString = "SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg";
  //As I pointed earlier you can use F for this string because there is no other F in it
  //no need for checking FINAL
  string subStringOfMyString = ReturnSubStringOfAGivenStringByLength(myString,"F");
}

Теперь вы можете вызвать ReturnSubStringOfMyString(), чтобы получить то, что вы хотите, и вы также можете вызвать ReturnSubStringOfAGivenStringByLength(string,string) -это можно использовать для любой строки, как ReturnSubStringOfAGivenStringByLength("SMITH 09-15 #4-01H6 FINAL 07-02-2011.dwg","F").