При разделении одинарных и двойных кавычек в строке с помощью удара / стандартный Linux управляет только

Добавьте ниже в ваш 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);

Надеюсь, вышесказанное имеет смысл.

20
задан cobbal 16 April 2009 в 21:05
поделиться

5 ответов

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

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
32
ответ дан 29 November 2019 в 22:38
поделиться

Вы можете использовать tr :

echo "$string" | tr -d 'chars to delete' 

... также работает, однако 'tr' Известно, что проблематично для более старых (около 9-ти) дистрибутивов. tr - это сокращение от «translate», обычно используемое в каналах для преобразования ввода. Опция -d просто означает «удалить».

Большинство современных версий также содержат предопределенные макросы для преобразования верхних в нижние, нижних в верхние, устранения пробелов и т. Д. Следовательно, если вы используете его, потратьте секунду, чтобы узнать, что еще он делает (см. Справочный вывод / man страница), пригодится.

16
ответ дан 29 November 2019 в 22:38
поделиться

Просто используя встроенные функции 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 см .:

http://codesnippets.joyent.com/posts/show/1816

4
ответ дан 29 November 2019 в 22:38
поделиться

Вы, вероятно, захотите использовать sed ...

echo $mystring | sed -s "s/^\(\(\"\(.*\)\"\)\|\('\(.*\)'\)\)\$/\\3\\5/g"
7
ответ дан 29 November 2019 в 22:38
поделиться
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)"

он не очень хорошо обрабатывает крайние случаи (например, пустую строку), но будет служить отправной точкой точка. Он работает, чередуя передний и задний символы, если они одинаковы, и если они «или»

1
ответ дан 29 November 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: