Добавьте ниже в ваш Form1.cs. Это происходит, когда пользователь щелкает элемент списка, он вызывает (вызывать событие) метод listBox1_MouseClick и устанавливает текст текстового поля равным тексту элемента списка. Я просто быстро создал приложение и реализовал нижеприведенное, и оно работает.
private void listBox1_MouseClick(object sender, MouseEventArgs e)
{
textBox1.Text = listBox1.Text;
}
И добавьте нижеследующее в файл Form1.Designer.cs, где находятся остальные свойства списка. Ниже подписывается на событие, метод listBox1_MouseClick в Form1.cs, поэтому, когда пользователь нажимает на элемент списка, будет запущен метод listBox1_MouseClick.
this.listBox1.MouseClick += new MouseEventHandler(this.listBox1_MouseClick);
Надеюсь, вышесказанное имеет смысл.
Это должно сделать это:
sed "s/^\([\"']\)\(.*\)\1\$/\2/g" in.txt
Где in.txt:
"Fo'od'
'Food'
"Food"
"Fo"od'
Food
'Food"
"Food'
'Fo'od'
"Fo'od"
Fo'od
'Fo"od'
"Fo"od"
Fo"od
И ожидаемый .txt:
"Fo'od'
Food
Food
"Fo"od'
Food
'Food"
"Food'
Fo'od
Fo'od
Fo'od
Fo"od
Fo"od
Fo"od
Вы можете проверить, совпадают ли они с:
diff -s <(sed "s/^\([\"']\)\(.*\)\1\$/\2/g" in.txt) expected.txt
Вы можете использовать tr
:
echo "$string" | tr -d 'chars to delete'
... также работает, однако 'tr' Известно, что проблематично для более старых (около 9-ти) дистрибутивов. tr
- это сокращение от «translate», обычно используемое в каналах для преобразования ввода. Опция -d
просто означает «удалить».
Большинство современных версий также содержат предопределенные макросы для преобразования верхних в нижние, нижних в верхние, устранения пробелов и т. Д. Следовательно, если вы используете его, потратьте секунду, чтобы узнать, что еще он делает (см. Справочный вывод / man страница), пригодится.
Просто используя встроенные функции Bash (то есть расширение параметров Bash):
IFS=' '
food_strings=( "'Food'" '"Food"' Food "'Food\"" "\"Food'" "'Fo'od'" "\"Fo'od\"" "Fo'od" "'Fo\"od'" '"Fo"od"' 'Fo"od' )
for food in ${food_strings[@]}; do
[[ "${food#\'}" != "$food" ]] && [[ "${food%\'}" != "$food" ]] && { food="${food#\'}"; food="${food%\'}"; }
[[ "${food#\"}" != "$food" ]] && [[ "${food%\"}" != "$food" ]] && { food="${food#\"}"; food="${food%\"}"; }
echo "$food"
done
Еще один пример расширения параметров Bash см .:
Вы, вероятно, захотите использовать sed ...
echo $mystring | sed -s "s/^\(\(\"\(.*\)\"\)\|\('\(.*\)'\)\)\$/\\3\\5/g"
python -c "import sys;a=sys.stdin.read();a=a.strip();print (a[1:-1] if a[0]==a[-1] and a[0] in \"'\\\"\" else a)"
он не очень хорошо обрабатывает крайние случаи (например, пустую строку), но будет служить отправной точкой точка. Он работает, чередуя передний и задний символы, если они одинаковы, и если они «или»