0

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

  1. 我想将其转换为标题大小写(“Sara Williams Joseph Nauman”)
  2. 如果单词之间有两个以上,我也想删除空格。

我想知道如何在存储过程、Crystal Reports 公式或 .cs 文件中进行转换。

4

3 回答 3

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
)
于 2012-11-05T06:40:11.857 回答
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")
于 2012-11-05T18:00:54.600 回答
0

在 VB.net 中,等价于:

str1 = StrConv(str1, vbProperCase)

这只是一个仅供参考,以防其他人在 VB.net 中寻找它。

于 2013-07-18T17:11:32.837 回答