我有一个字符串,让我们说Hello world,我需要在索引3处替换char.如何通过指定索引来替换char?
var str = "hello world";
Run Code Online (Sandbox Code Playgroud)
我需要类似的东西
str.replaceAt(0,"h");
Run Code Online (Sandbox Code Playgroud) 我能以多快的速度替换字符串中的字符?
因此,这个问题的背景是:我们有几个应用程序通过套接字相互通信并与客户端的应用程序通信.这些套接字消息包含不可打印的字符(例如chr(0)),需要用预定的字符串替换(例如"{Nul}"},因为套接字消息保存在日志文件中.每条日志消息都需要替换字符.
现在我从这个MSDN链接开始阅读这个小冒险,我从这个网站的另一篇文章中找到了这个链接.
我们当天使用的当前方法......在一天开始时...使用StringBuilder来检查所有可能的替换,例如......
Public Function ReplaceSB(ByVal p_Message As String) As String
Dim sb As New System.Text.StringBuilder(p_Message)
sb.Replace(Chr(0), "{NUL}")
sb.Replace(Chr(1), "{SOH}")
Return sb.ToString
End Function
Run Code Online (Sandbox Code Playgroud)
现在正如博客文章指出的那样离开StringBuilder并使用string.replace确实会产生更快的结果.(实际上,使用StringBuilder是整天这样做的最慢的方法.)
p_Message = p_Message.Replace(Chr(0), "{NUL}")
p_Message = p_Message.Replace(Chr(1), "{SOH}")
Run Code Online (Sandbox Code Playgroud)
知道不是每条消息都需要经历这个过程,我认为这样可以节省时间,而不必处理那些可能被遗漏的消息.所以使用正则表达式我首先搜索字符串,然后确定是否需要处理它.这与使用string.replace大致相同,基本上是节省不处理所有字符串的时间,但是用正则表达式检查所有字符串会浪费时间.
然后建议尝试使用一些与旧索引和新索引匹配的数组,并使用它来处理消息.所以它会是这样的......
Private chrArray() As Char = {Chr(0), Chr(1)}
Private strArray() As String = {"{NUL}", "{SOH}"}
Public Function TestReplace(ByVal p_Message As String) As String
Dim i As Integer
For i = 0 To ((chrArray.Length) - 1)
If p_Message.Contains(chrArray(i).ToString) Then
p_Message = p_Message.Replace(chrArray(i), …Run Code Online (Sandbox Code Playgroud) 我有一个CSV格式的日志,我们写了一些日志记录操作.但是,其中一个字段允许用户输入,我需要确保如果他们在字段中输入我们解析它的逗号并将其替换为某些东西,例如,Excel将能够读取并在其中显示逗号放置(因此csv读者不会认为它是列的结尾).
目前我替换了逗号,,但这在Excel中显示为文字字符串.
是否有标准方法在不使用实际逗号字符的情况下在CSV文件中显示逗号?即使只适用于excel的解决方案也可以使用,因为我们的大多数客户都将使用Excel来查看此文件.
在字节对编码算法中,有一个替换步骤,它将由空格分隔的字符串更改为bigrams.
即,给出一个str元组列表:
[('t', 'h', 'i', 's', '\ue000'), ('c', 'o', 'r', 'p', 'u', 's', '\ue000'), ('i', 'n', '\ue000'), ('t', 'x', 't', 'f', 'i', 'l', 'e', '\ue000'), ('t', 'h', 'e', '\ue000'), ('s', 'e', 'n', 't', 'e', 'n', 'c', 'e', '\ue000'), ('b', 'a', 'r', '\ue000'), ('a', 'n', 'd', '\ue000'), ('i', 's', '\ue000'), ('f', 'o', 'o', '\ue000'), ('f', 'i', 'r', 's', 't', '\ue000'), ('a', '\ue000'), ('.', '\ue000')]
Run Code Online (Sandbox Code Playgroud)
和一个字符串元组: ('i', 's')
如何处理列表,使其遍历所有元组键并替换('i', 's')为('is')?,即输出Counter看起来像这样:
[('t', …Run Code Online (Sandbox Code Playgroud) 这有效:
$string = "This string, has a, lot, of commas in, it."
$string -replace ',',''
Run Code Online (Sandbox Code Playgroud)
输出:这个字符串中有很多逗号。
但这不起作用:
$string = "This string. has a. lot. of dots in. it."
$string -replace '.',''
Run Code Online (Sandbox Code Playgroud)
输出:空白。
为什么?
我想使用 pythonic 方法替换字符串中的一些字符。
A -> T
C -> G
G -> C
T -> A
Run Code Online (Sandbox Code Playgroud)
例子:
AAATCGATGAT
将转变为
TTTAGCTAACTA
我做了什么:
def swap(string):
string = re.sub('A', 'aux', string)
string = re.sub('T', 'A', string)
string = re.sub('aux', 'T', string)
string = re.sub('C', 'aux', string)
string = re.sub('G', 'C', string)
string = re.sub('aux', 'G', string)
return string
Run Code Online (Sandbox Code Playgroud)
它效果很好,但我正在寻找一种更Pythonic的方式来实现这一目标。
我想将一个字符串转换为一个url,而不是一个空格,它需要在关键字之间加一个"+".
例如:
"Hello I am"
Run Code Online (Sandbox Code Playgroud)
至:
"Hello+I+am"
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
set some_string "Name/is/ComplexSTRUCTUre"
Run Code Online (Sandbox Code Playgroud)
将此字符串转换为
some_string = "Name/is/ComplexSTR.CTUre"
Run Code Online (Sandbox Code Playgroud)
即首先替换"U"为"."
我正在尝试使用以下命令从文本文件中删除所有非字母数字:
cat textfile.txt | tr -cd [:alnum:] > textfile_alnum.txt
Run Code Online (Sandbox Code Playgroud)
这是可行的,只不过现在其中的输出textfile_alnum.txt都在同一行上。如何将每个字符串保留在单独的行上?
我尝试将"\"字符替换为空"",但我不能这样做.怎么解决?
这是我的代码
abc = abc.replace('\','');
Run Code Online (Sandbox Code Playgroud) 我正在阅读相当多的源自Excel的.csv文件到R.一些单元格包含值'#NUM!',我猜测结果除以零.在任何情况下,R都不喜欢它.由于我有很多文件,我想替换#NUM!带有NA的值,因为我将文件导入R.而不是遍历每个执行搜索替换的文件.
建议表示赞赏.谢谢.
JD