Как я могу использовать первую букву каждого слова? - PullRequest
2 голосов
/ 19 мая 2009

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

Спасибо за все ответы.

Stackoverflow пород!

Ответы [ 20 ]

13 голосов
/ 19 мая 2009

В Python достаточно open('file.txt').read().title().

11 голосов
/ 05 сентября 2009

Использование нестандартного (расширение Gnu) sed из командной строки:

sed -i '' -r 's/\b(.)/\U\1/g' file.txt

Избавьтесь от "-i", если вы не хотите, чтобы он изменял файл на месте.

обратите внимание, что вы не должны использовать это в переносимых скриптах

6 голосов
/ 19 мая 2009

C #:

string foo = "bar baz";
foo = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(foo);
//foo = Bar Baz
3 голосов
/ 19 мая 2009

Скала:

scala> "hello world" split(" ") map(_.capitalize) mkString(" ")
res0: String = Hello World

или хорошо, учитывая, что ввод должен быть файл:

import scala.io.Source
Source.fromFile("filename").getLines.map(_ split(" ") map(_.capitalize) mkString(" "))
3 голосов
/ 19 мая 2009

В оболочке, используя ruby, это работает при условии, что ваш входной файл называется FILENAME, и он должен сохранять все существующие форматы файлов - он не сокращает интервал, как некоторые другие решения:

cat FILENAME | ruby -n -e 'puts $_.gsub(/^[a-z]|\s+[a-z]/) { |a| a.upcase }'
3 голосов
/ 15 февраля 2011

Вы также можете сделать это с помощью Ruby, используя формат командной строки в терминале:

cat FILENAME | ruby -n -e 'puts gsub(/\b\w/, &:upcase)'

Или:

ruby -e 'puts File.read("FILENAME").gsub(/\b\w/, &:upcase)'
2 голосов
/ 22 октября 2011

Баш:

$ X=(hello world)
$ echo ${X[@]^}
Hello World
2 голосов
/ 19 мая 2009

Простой Perl-скрипт, который делает это: (через http://www.go4expert.com/forums/showthread.php?t=2138)

sub ucwords {
  $str = shift;
  $str = lc($str);
  $str =~ s/\b(\w)/\u$1/g;
  return $str;
}

while (<STDIN>) {
    print ucwords $_;
}

Тогда вы называете это с

perl ucfile.pl < srcfile.txt > outfile.txt
1 голос
/ 20 мая 2009

Вот еще одно решение Ruby, использующее милые маленькие помощники по написанию сценариев в Ruby (автоматическое чтение входных файлов и т.

ruby -ni~ -e "puts $_.gsub(/\b\w+\b/) { |word| word.capitalize }" foo.txt

(при условии, что ваш текст хранится в файле с именем foo.txt.)

Лучше всего использовать с Ruby 1.9 и его потрясающей многоязычной поддержкой, если ваш текст содержит символы не ASCII.

1 голос
/ 19 мая 2009

Это сделано в PHP.

$string = "I need a script in any language to capitalize the first letter of every word in a file."
$cap = ucwords($string);
...