訓練家的佈弱格-Patch1.2

The BLOG of trainer



編輯日期:2010-06-23 16:01

類型:程式設計
作者:羽山
文章時間:2010-06-23 16:01:48
瀏覽人數:4659人
標題: 字首大寫設計
網址:http://59.126.75.42/blog/blog.php?id=1061
內容:
 

(範例) input:  SMITH, A.J. and OTHER, A.N. and SCROOGE, E.

       output: Smith, A.J. and Other, A.N. and Scrooge, E.

 

使用 SED 解決

 

 echo "SMITH, A.J. and OTHER, A.N. and SCROOGE, E." |sed -e 's/\(\([A-Z][A-Z]\)\+\([,|.|\ ]\)\)/\L\1/g'

 

或 Rickz 提出的

echo "SMITH, A.J. and OTHER, A.N. and SCROOGE, E." |sed 's/\([A-Z]\)\([A-Z]*\)/\1\L\2/g'

 

或 PHP 版本的

 

#!/usr/bin/php
<?php
    $argv[1];
    $lens=strlen($argv[1]);
    for($i=$lens-1;$i>=0;$i--)
    {
        if($argv[1][$i]>='A'&&$argv[1][$i]<='Z')
        {
            if($argv[1][$i-1]>='A'&&$argv[1][$i-1]<='Z')
            {
                $argv[1][$i]=strtolower($argv[1][$i]);
            }
        }
    }
    echo $argv[1];
?>

 

或 C 版本的

 

#include <stdio.h>
#include <string.h>
void main(int argc,char* argv[])
{   
    int i;
    int lens=strlen(argv[1]);
    for(i=lens-1;i>=0;i--)
    {
        if(argv[1][i]>='A'&&argv[1][i]<='Z')
        {
            if(argv[1][i-1]>='A'&&argv[1][i-1]<='Z')
            {
                argv[1][i]=argv[1][i]+32;
            }
        }
    }
    printf("%s",argv[1]);   
}

 

或 python 版本的

 

#!/usr/bin/python
#  -*-  coding:  utf-8  -*-
import re,sys
def titlecase(s):
        return re.sub(r"([A-Z])+('[A-Z]+)?",
                      lambda mo: mo.group(0)[0].upper() +
                                  mo.group(0)[1:].lower(),
                      s)

data = sys.argv[1]
print titlecase(data)

 

以上都可以達成

 

首頁      1     最末頁 (總共有...1頁)

第 1 頁

有話要說  看留言 【1】
Kami 2010-06-23 17:06 回覆:
#include
#include
using namespace std;

int main(int agrc, char *argv[])
{
string command = argv[1], tmp;
const string delims(" t|><");
string::size_type bindex, eindex, loc;
bindex = command.find_first_not_of(delims);

while(bindex != string::npos)
{
eindex = command.find_first_of(delims, bindex);
tmp = command.substr(bindex, eindex-bindex);
loc = tmp.find( '.', 0 );
if(isupper(tmp[0]) && (loc == string::npos))
{
for(int i=1; i {
tmp[i] = tolower(tmp[i]);
}
}
cout << tmp << " ";
bindex = command.find_first_not_of(delims, eindex);
}
return 0;
}

1

其他分類
當月訓練
(2010-06-23)
【程式設計】字首大寫設計

最新訓練
(2025-04-05)
【NSR 150】NSR150 把手重新上漆

(2025-03-16)
【HONDA CBR1000RR】CBR1000RR 引擎怪聲內鏈調整器維修

(2025-03-13)
【KTM 390】KTM RC390 更換左前叉油

(2025-03-04)
【NSR 150】NSR150 排氣管尾管鑽孔排油

(2025-03-01)
【KTM 390】KTM Duke 390 更換內鏈調整器 排氣管上耐熱漆

(2025-02-15)
【KTM 390】KTM Duke 390 前叉漏油維修更換前叉油封

(2025-02-14)
【機車綜合相關】玩車工具篇

(2025-01-15)
【本田 MSX-125】MSX-125 單向閥、呼吸管清潔保養、更換安裝位置、頭罩重噴

(2025-01-14)
【木工】製作門擋

(2024-12-22)
【KTM 390】KTM RC390 更換後輪


試看看用鍵盤輸入「上上下下左右左右baba」