4-4将多个小字符串频拼接成一个字符串

本文介绍了一种在网络程序设计中对于基于UDP协议的自定义数据包参数拼接的方法。通过对参数列表使用不同的字符串拼接技术,如迭代列表使用'+'操作符与使用str.join()方法,来提高数据包构建效率并减少资源消耗。
# -*- coding:utf-8 -*-

"""
实际案例:
在设计某网络程序时,我们自定义了一个基于UDP的网络协议,
按照固定次序向服务器传递一系列参数:
hwDetect: "<0112>"
gxDepthBits: "<32>"
....

在程序中我们将各个参数按次序收集到列表中:
["<0112>", "<32>", "<1024*768>", ....]
最终我们要把各个参数拼接成agiel数据报进行发送.
"<0112><32><1024*768>...."

解决方案:
方法一:迭代列表,连续使用'+'操作依次拼接每一个字符串.
方法二:使用str.join()方法,耿佳快速的拼接列表中所有字符串.
"""


s1 = 'abcdefg'
s2 = '12345'
s = s1 + s2  # 调用的是str.__add__(s1, s2)重载函数生成的结果
# s1 > s2    # str.__gt__(s1, s2)

pl = ["<0112>", "<32>", "<1024>"]
s = ''
for p in pl:
    s += p           # 存在重复地创建字符串临时对象,释放临时结果的循环过程,浪费资源
    print s
# <0112>
# <0112><32>
# <0112><32><1024>

print ';'.join(['abc', '123', 'xyz'])
print ''.join(['abc', '123', 'xyz'])  # join方法不存在临时资源浪费的情况
# abc;123;xyz
# abc123xyz

l = ['abc', 123, 45, 'xyz']
print ''.join([str(x) for x in l])      # 当字符串很长时,也会对资源产生很大的开销
# 使用生成器表达式:类似于列表解析,只不过换成圆括号  (str(x) for x in l)
# 它是一个生成器对象<generator object <genexpr> at 0x7fa0d95d9b40>

print ''.join(str(x) for x in l)
在Beanshell中,有多种方法可以将一个字符串变量和一个字符串拼接一个字符串。 ### 使用`+`运算符 这是最简单直接的方式,和Java中一样,使用`+`运算符可以方便地拼接字符串。示例代码如下: ```java // 定义字符串变量 String strVar = "Hello"; // 定义要拼接字符串 String str = " World!"; // 拼接字符串 String result = strVar + str; // 输出结果 System.out.println(result); ``` ### 使用`StringBuffer`或`StringBuilder` 当需要进行大量的字符串拼接操作时,使用`StringBuffer`或`StringBuilder`效率更高。`StringBuffer`是线程安全的,而`StringBuilder`不是线程安全的,但性能稍高。以下是使用`StringBuffer`的示例: ```java // 定义字符串变量 String strVar = "Hello"; // 定义要拼接字符串 String str = " World!"; // 创建StringBuffer对象 StringBuffer strBuf = new StringBuffer(); // 添加字符串变量 strBuf.append(strVar); // 添加字符串 strBuf.append(str); // 将StringBuffer对象转换为字符串 String result = strBuf.toString(); // 输出结果 System.out.println(result); ``` 在提供的引用中也有使用`StringBuffer`进行字符串拼接的示例,如通过`StringBuffer`拼接`"${courseDraftId_"`、变量`${index}`和`"}"` [^5]。 ### 使用`String.format`方法 `String.format`方法可以根据指定的格式将多个参数组合一个字符串。示例如下: ```java // 定义字符串变量 String strVar = "Hello"; // 定义要拼接字符串 String str = " World!"; // 使用String.format方法拼接字符串 String result = String.format("%s%s", strVar, str); // 输出结果 System.out.println(result); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值