У меня есть функция, которая возьмет string
и удалит его первое слово и всегда держит последнее слово.Удалить первое слово в строке непрерывно и сохранить последнее слово [Xamarin Forms] C#
Строка возвращается из моей функции SFSpeechRecognitionResult result
.
С моим текущим кодом он работает, когда код запускается один раз, первое слово удаляется из строки и остается только последнее слово. Но когда функция запускается снова, новые слова просто сохраняются в result.BestTranscription.FormattedString
string
, и первое слово не удаляется.
Это моя функция:
RecognitionTask = SpeechRecognizer.GetRecognitionTask
(
LiveSpeechRequest,
(SFSpeechRecognitionResult result, NSError err) =>
{
if (result.BestTranscription.FormattedString.Contains(" "))
{
//and this is where I try to remove the first word and keep the last
string[] values = result.BestTranscription.FormattedString.Split(' ');
var words = values.Skip(1).ToList();
StringBuilder sb = new StringBuilder();
foreach (var word in words)
{
sb.Append(word + " ");
}
string newresult = sb.ToString();
System.Diagnostics.Debug.WriteLine(newresult);
}
else
{
//if the string only has one word then I will run this normally
thetextresult = result.BestTranscription.FormattedString.ToLower();
System.Diagnostics.Debug.WriteLine(thetextresult);
}
}
);
Это может быть потому, что вы всегда добавить пробел в конце строки, поэтому '.Constains (" ")' всегда верно? Вместо этого попробуйте 'String.Join (" ", words)'. –
Зачем хранить это как строку, а не 'List' для отдельных слов? Или, может быть, даже 'Queue ', как это работает? –
DavidG
Еще более быстрый способ будет 'строка newresult = previousresult.Substring (previousresult.IndexOf (» «));' –