C#编程(10_串联多个字符串)

串联是将一个字符串追加到另一个字符串末尾的过程。使用 + 运算符串联字符串文本或字符串常量时,编译器会创建一个字符串。串联不在运行时发生。但字符串变量只能在运行时串联,对此,您应该了解各种方法的性能含义。

下面的示例演示如何将一个长字符串拆分为几个较短的字符串,从而提高源代码的可读性。这些较短的字符串将在编译时串联成一个字符串。无论涉及到多少个字符串,都不会有运行时性能开销。

static void Main()
{
    // Concatenation of literals is performed at compile time, not run time.
    string text = "Historically, the world of data and the world of objects " +
    "have not been well integrated. Programmers work in C# or Visual Basic " +
    "and also in SQL or XQuery. On the one side are concepts such as classes, " +
    "objects, fields, inheritance, and .NET Framework APIs. On the other side " +
    "are tables, columns, rows, nodes, and separate languages for dealing with " +
    "them. Data types often require translation between the two worlds; there are " +
    "different standard functions. Because the object world has no notion of query, a " +
    "query can only be represented as a string without compile-time type checking or " +
    "IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
    "objects in memory is often tedious and error-prone.";

    Console.WriteLine(text);
}

若要串联字符串变量,可以使用 + 或 += 运算符,也可以使用 String.ConcatString.FormatStringBuilder.Append 方法。+  运算符容易使用,且有利于提高代码的直观性。  即使在一条语句中使用多个 + 运算符,字符串内容也将只复制一次。但是,如果重复此操作多次(如使用循环),则可能会导致出现效率问题。例如,考虑下面的代码:

static void Main(string[] args)
{
    // To run this program, provide a command line string.
    // In Visual Studio, see Project > Properties > Debug.
    string userName = args[0];
    string date = DateTime.Today.ToShortDateString();

    // Use the + and += operators for one-time concatenations.
    string str = "Hello " + userName + ". Today is " + date + ".";
    System.Console.WriteLine(str);

    str += " How are you today?";
    System.Console.WriteLine(str);

    // Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
}
// Example output:
//  Hello Alexander. Today is 1/22/2008.
//  Hello Alexander. Today is 1/22/2008. How are you today?
//  Press any key to exit.
//

如果您串联的字符串数量不那么巨大(例如,在循环中),那么这些代码的性能成本可能不会很高。上述情况同样适用于 String.ConcatString.Format 方法。

但如果性能的优劣很重要,则应该总是使用 StringBuilder 类来串联字符串。下面的代码使用 StringBuilder 类的 Append 方法来串联字符串,因此不会有 + 运算符的链接作用产生。

class StringBuilderTest
{
    static void Main()
    {
        string text = null;

        // Use StringBuilder for concatenation in tight loops.
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        for (int i = 0; i < 100; i++)
        {
            sb.AppendLine(i.ToString());
        }
        System.Console.WriteLine(sb.ToString());

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
// Output:
// 0
// 1
// 2
// 3
// 4
// ...
//

From the MSDN.

时间: 2024-10-04 11:12:26

C#编程(10_串联多个字符串)的相关文章

POJ C程序设计进阶 编程题#2:字符串中次数第2多的字母

编程题#2:字符串中次数第2多的字母 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一串长度不超过500个符号的字符串,输出在串中出现第2多的英语字母(大小写字母认为相同)和次数(如果串中有其它符号,则忽略不考虑).如果有多个字母的次数都是第2多,则按串中字母出现的顺序输出第1个. 例 ab&dcAab&c9defgb 这里,a 和 b都出现3次,c和d都出现2

串口通讯编程中涉及到的字符串处理关键字及处理字符串对应函数

一   字符串处理关键字总结 作用 关键字 比较两个字符串. StrComp 变换字符串. StrConv 大小写变换. Format, LCase, UCase 建立重复字符的字符串. Space, String 计算字符串长度. Len 设置字符串格式. Format 重排字符串. LSet, RSet 处理字符串. InStr, Left, LTrim, Mid, Right, RTrim, Trim 设置字符串比较规则. Option Compare 运用 ASCII 与 ANSI 值.

【编程题目】对称子字符串的最大长度 ★

73.对称字符串的最大长度(字符串).题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度.比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出 4. 虽然知道会有简单的方法,可脑子就是转不动了,只好用最常见的,对所有可能的字符串判断是否为对称的.再输出最大长度 O(N3) /* 73.对称字符串的最大长度(字符串). 题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度. 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“g

(一)Python入门-2编程基本概念:13字符串-Unicode字符集-三种创建字符串的方式-len()

一:字符串基本特点 很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能编程.实际上, 大多数程序员打交道最多的是“字符串”而不是“数字”.因为,编程是用来解决现实问题 的,因此逻辑思维的重要性远远超过数学能力. 字符串的本质是:字符序列.Python的字符串是不可变的,我们无法对原字符串做任何修改.但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果. Python不支持单字符类型,单字符也是作为一个字符串使用的.Python中字符串是基本数据类型. 二:字符串的编

期末考试——编程题#5:字符串插入

来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB. 描述 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3.(字符个数不包括字符串结尾处的'\0'.)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个. 输入 输入包括若干行,每一行为一组测试数据,格式为 str substr 输出 对于每一组测试数据,输出插

c语言代码编程题汇总:将字符串中的大写字母转换成小写字母

将字符串中的大写字母转换成小写字母 程序代码如下: 1 /* 2 2017年3月8日21:21:46 3 功能:将字符串中的大写字母转换成小写字母 4 */ 5 /* 6 #include"stdio.h" 7 8 int main() 9 { 10 int n = 0; 11 12 char a[100]; 13 14 printf("please input a string:"); 15 16 gets(a); 17 18 for(int i = 0 ;a[i

《解读window核心编程》 之 字符和字符串处理方式

推荐的字符和字符串处理方式 開始将文本字符串想象为字符的数组,而不是 char 或字节的数组. 用通用数据类型(如 TCHAR/PTSTR )来表示文本字符和字符串. 用明白的数据类型(如 BYTE 和 PBYTE )来表示字节,字节指针和数据缓冲区. 用 TEXT 或 _T 宏来表示字面量字符和字符串.但为了保持一致性和更好的可读性,请避免两者混用: 运行全局替换(比如用 PTSTR 替换 PSTR ) ; 改动与字符串有关的计算.比如,函数常常希望我们传给它缓冲区打小的字符数.而不是字节数.

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。

char str[255] = {0}; printf("请输入一个字符串:\n"); scanf("%[^\n]", str);//意思是非'\n'.也就是说只要没有遇到换行就继续输入,当遇到换行符的时候此语句结束.而默认情况是遇到换行语句执行结束,但是str的值只是第一个空格前的值.但这样写,按回车时scanf执行完,中间所有内容包括空格都会输入到str中去. // gets(str); int maxLength = 0, maxIndex = 0; int