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

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

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

Stackoverflow пород!

Ответы [ 20 ]

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

рубин:

irb> foo = ""; "foo bar".split.each { |x| foo += x.capitalize + " " }
=> ["foo", "bar"]

irb> foo
=> "Foo Bar "
1 голос
/ 19 мая 2009
VB.Net:

Dim sr As System.IO.StreamReader = New System.IO.StreamReader("c:\lowercase.txt")
Dim str As String = sr.ReadToEnd()
sr.Close()
str = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(str)
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter("c:\TitleCase.txt")
sw.Write(str)
sw.Close()
1 голос
/ 19 мая 2009

php использует ucwords ($ string) или ucwords («все это будет начинаться с заглавных букв»), чтобы добиться цели. так что вы можете просто открыть файл и получить данные, а затем использовать эту функцию:

<?php 
$file = "test.txt"; 
$data = fopen($file, 'r');
$allData = fread($data, filesize($file));
fclose($fh);
echo ucwords($allData);
?>

Правка, мой код обрезан. К сожалению.

0 голосов
/ 06 января 2014

Еще одно решение с awk, делающее вид, что оно проще, чем короче ;)

$ cat > file
  thanks for all the fish
  ^D
$ awk 'function tocapital(str) {
           if(length(str) > 1)
               return toupper(substr(str, 1, 1)) substr(str,2)
           else
               return toupper(str)
       }

       {
           for (i=1;i<=NF;i++) 
               printf("%s%s", tocapital($i), OFS);
           printf ORS
       }
      ' < file
  Thanks For All The Fish
0 голосов
/ 11 января 2018

При использовании каналов и Python:

$ echo "HELLO WORLD" | python3 -c "import sys; print(sys.stdin.read().title())"
Hello World

Например:

$ lorem | python3 -c "import sys; print(sys.stdin.read().title())"
Officia Est Omnis Quia. Nihil Et Voluptatem Dolor Blanditiis Sit Harum. Dolore Minima Suscipit Quaerat. Soluta Autem Explicabo Saepe. Recusandae Molestias Et Et Est Impedit Consequuntur. Voluptatum Architecto Enim Nostrum Ut Corrupti Nobis.

Вы также можете использовать такие вещи, как strip() для удаления пробелов или capitalize():

$ echo "  This iS mY USER ${USER}   " | python3 -c "import sys; print(sys.stdin.read().strip().lower().capitalize())"
This is my user jenkins
0 голосов
/ 18 декабря 2013

Очень базовая версия для AMOS Basic на Amiga & mdash; только рассматривает пробелы как разделители слов. Я уверен, что есть лучший способ использовать PEEK и POKE, но моя память довольно ржавая с чем-то более 15 лет.

FILE$=Fsel$("*.txt")
Open In 1,FILE$
Input #1,STR$
STR$=Lower$(STR$)
L=Len($STR)
LAST$=" "
NEW$=""
For I=0 to L-1
  CUR$=MID$(STR$,I,1)
  If LAST$=" "
    NEW$=NEW$+Upper$(CUR$)
  Else
    NEW$=NEW$+$CUR$
  Endif
  LAST$=$CUR$
Next
Close 1
Print NEW$

Я скучаю по старой доброй AMOS, замечательному языку для изучения ... хотя и ужасно, хе.

0 голосов
/ 14 ноября 2013

зш раствор

#!/bin/zsh
mystring="vb.net lOOKS very unsexy"
echo "${(C)mystring}"
Vb.Net Looks Very Unsexy

Примечание делает CAP после каждого не альфа-символа, см. VB.Net.

0 голосов
/ 25 мая 2013

Хотя было упомянуто в комментариях, никто никогда не публиковал awk подход к этой проблеме:

$ cat output.txt
this is my first sentence. and this is the second sentence. that one is the third.
$
$ awk '{for (i=0;i<=NF;i++) {sub(".", substr(toupper($i), 1,1) , $i)}} {print}' output.txt 
This Is My First Sentence. And This Is The Second Sentence. That One Is The Third.

Объяснение

Мы перебираем поля и пишем с заглавной буквы первую букву каждого слова. Если разделитель полей не был пробелом, мы могли бы определить его с помощью -F "\t", -F "_" или любого другого.

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

В рубине:

str.gsub(/^[a-z]|\s+[a-z]/) { |a| a.upcase }

хм, на самом деле это лучше:

str.each(' ') {|word| puts word.capitalize}
0 голосов
/ 19 мая 2009

Perl:

$ perl -e '$foo = "foo bar"; $foo =~ s/\b(\w)/uc($1)/ge; print $foo;'

Foo Bar

...