如何将字符串转换为标题大小写并删除重复的空格

时间:2012-11-04 22:23:44

标签: asp.net stored-procedures crystal-reports

我有一个长字符串(“sara james joseph NAUMAN”),它使用存储过程在VS2008(c#)中使用Crystal Reports显示。

  1. 我想将其转换为标题案例(“Sara Williams Joseph Nauman”)
  2. 如果单词之间有两个以上,我也想删除空格。
  3. 我想知道如何在存储过程,Crystal Reports公式或.cs文件中进行转换。

3 个答案:

答案 0 :(得分:2)

有一个名为ProperCase(str)的函数可以修复外壳。

`ProperCase("sara james joseph NAUMAN")`

借用一点Hariharan Anbazhagan的代码;如果您的字符串前后碰巧有空格,请使用Trim(str)。没有任何功能可以删除单词之间的空格,因此这段代码可以完成这项工作。

stringvar str1;
stringvar str2;
numbervar counter;
numbervar leng;

str2 := Trim("   Big     Space   ");

leng := len(str2);
if leng>0 then
(
    for counter := 1 to leng do
    (
        If Not(Mid(str2, counter, 1) = " " and (Mid(str2, counter+1, 1)) = " ") Then
        (
            str1:=str1 + Mid(str2, counter, 1)
        )
    );
str1
)

答案 1 :(得分:1)

自定义公式Format()

// Format()
Function (Stringvar value, Optional Stringvar delimiter:=",")

    // create an array of formetted names (and blanks)
    // "sara james joseph       NAUMAN" => "Sara James Joseph       Nauman"
    Local Stringvar Array temp:=Split( ProperCase(value), " ");

    Local Stringvar Array values;

    Local Numbervar i;

    // remove empty array positions
    For i:= 1 To Ubound(temp) Do (

      If temp[i]<>"" Then (

        Redim Preserve values[Ubound(values)+1];
        values[Ubound(values)]:=temp[i]

      )

    );

    // delimited list
    Join(values, delimiter);

在公式中引用它:

// returns "Sara,James,Joseph,Nauman"
Format("sara james joseph       NAUMAN")

答案 2 :(得分:0)

在VB.net中,等价物是:

str1 = StrConv(str1, vbProperCase)

这只是一个FYI,以防其他人在VB.net中寻找这个。