在本文中,我们将为您详细介绍SQL替换字符串中的多个不同字符的相关知识,此外,我们还会提供一些关于c#–LINQlambda表达式替换字符串中的多个字符?、c#–正则表达式替换–如何在不同字符串的多个
在本文中,我们将为您详细介绍SQL替换字符串中的多个不同字符的相关知识,此外,我们还会提供一些关于c# – LINQ lambda表达式替换字符串中的多个字符?、c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?、C++ 有没有办法替换字符串中的多个标记、C#字符串替换实际上并不替换字符串中的值的有用信息。
本文目录一览:- SQL替换字符串中的多个不同字符
- c# – LINQ lambda表达式替换字符串中的多个字符?
- c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?
- C++ 有没有办法替换字符串中的多个标记
- C#字符串替换实际上并不替换字符串中的值
SQL替换字符串中的多个不同字符
我需要替换字符串中的多个字符。结果不能包含任何“&”或任何逗号。
我目前有:
REPLACE(T2.[ShipToCode],'&','and')
但是,如何输入多个值?
非常感谢!
c# – LINQ lambda表达式替换字符串中的多个字符?
例如.
return query.Select(x => { x.somePropertyName= x.somePropertyName.Trim().Replace(' ',"_"); return x; }).ToList();
出于某种原因,当我需要替换多个字符时,上面的查询不会替换单个字符.
谢谢
解决方法
char[] unwanted = new[] {'X','Y','Z'}; query = query.Select(x => { x.somePropertyName = string.Join("_",x.somePropertyName.Split(unwanted)); return x; });
这将用’_’替换’X’,’Y’或’Z’的任何出现.您可以将其与您选择的循环结构相结合.
正如评论中所讨论的,在这种情况下,使用Select并不会真正添加任何值.一个正常的foreach循环可以完成这项工作,甚至可以生成更紧凑的代码:
char[] unwanted = new[] {'X','Z'}; foreach(var x in query) { x.somePropertyName = string.Join("_",x.somePropertyName.Split(unwanted)); };
c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?
我有一个字符串,在多个步骤中具有一些常量值.例如,考虑以下刺痛.
string tmpStr = "Hello _tmp_ how is _tmp_ this possible _tmp_ in C#...?"
现在我想用存储在数组中的值替换字符串中的每个tmp,首先tmp保存数组[0],第二个tmp保存数组[1],依此类推……
知道如何实现这一点……?我使用C#2.0
解决方法
string input = "Hello _tmp_ how is _tmp_ this possible _tmp_ in C#...?"; string[] array = { "value1","value2","value3" }; Regex rx = new Regex(@"\b_tmp_\b"); if (rx.Matches(input).Count <= array.Length) { int index = 0; string result = rx.Replace(input,m => array[index++]); Console.WriteLine(result); }
您需要确保找到的匹配数永远不会超过数组的长度,如上所示.
编辑:响应评论,这可以很容易地使用C#2.0,用这个替换lambda:
string result = rx.Replace(input,delegate(Match m) { return array[index++]; });
C++ 有没有办法替换字符串中的多个标记
如何解决C++ 有没有办法替换字符串中的多个标记?
我正在开发一个简单的终端 shell,我想知道是否有办法用其他值替换字符串中的多个变量标记。
给定类似 PATH = $PATH:$CWD
的东西,这将转化为 PATH = /usr/bin:/usr
我当前的代码只能处理一个字符串中的一个变量。仅当标记后跟非字母数字字符时才能替换该变量。
string varInterp(string &token)
{
int startIndex = -1,endindex = -1;
for (int i = 0; i < token.size(); i++)
{
if (token[i] == ''$'')
{
startIndex = i;
int j = i+1;
while (isalnum(token[j]) && j < token.size())
{
endindex = j;
j++;
}
if (j == token.size())
endindex = -1;
}
}
if (startIndex != -1 && endindex != -1)
{
int varLen = endindex - startIndex;
string varName = token.substr(startIndex+1,varLen);
string varVal = globalVars.getVal(varName);
token.replace(startIndex,varLen+1,varVal);
}
return token;
}
解决方法
一种可能的解决方案是如何解析大字符串,就像在简单的计算器中一样使用堆栈。您只需将所有字符串逐步推入堆栈,将其拆分为有意义的小块。 这段代码并不完美,我只是在这里展示以下想法。
#include <stack>
#include <string>
#include <iostream>
#include <map>
std::string parser(std::string str)
{
std::map <std::string,std::string> symbols = { {"PATH","/usr/bin"},{"CWD","/usr"} };
std::stack<std::string> stack_;
std::string currentToken;
bool inToken = false;
for (auto i =0;i<str.size();i++)
{
if (inToken)
{
auto it = symbols.find(currentToken);
if (it==symbols.end()) currentToken += str[i];
else
{
inToken = false;
stack_.push(symbols[currentToken]);
currentToken.clear();
i--;
}
//this code duplicates block just if it last char in string is last symbol of token
it = symbols.find(currentToken);
if (it != symbols.end() && (i == str.size() - 1))
{
inToken = false;
stack_.push(symbols[currentToken]);
currentToken.clear();
}
}
else if (str[i] == ''$'')
{
currentToken += str[++i];
inToken = true;
}
else
stack_.push(std::string()+str[i]);
}
std::string result;
while (stack_.size())
{
result.insert(0,stack_.top());
stack_.pop();
}
return result;
}
int main()
{
std::cout << parser("$PATH:$CWD");
}
,
您可以创建一个函数,将 str1 替换为 str2 内的 str,使用 string::find 和 string::replace 的组合
首先找到str1在str中的位置
size_t pos = str.find(str1);
然后,您可以使用replace将str中从pos
到pos + str1.length()
的字符替换为str2
str.replace(pos,str1.length(),str2);
现在,当您拥有该函数时,您可以将其与一些 if
条件一起使用来替换字符串中所需的任何标记
C#字符串替换实际上并不替换字符串中的值
这个问题已经在这里有了答案 :
string.Replace(或其他字符串修改)不起作用 (4个答案)
2年前关闭。
我正在尝试用另一个字符串替换字符串的一部分。更确切地说,我有 C:\Users\Desktop\Project\bin\Debug
我正在尝试\bin\Debug
用\Resources\People
我尝试了以下方法:
-
path.Replace(@"\bin\Debug",@"\Resource\People\VisitingFaculty.txt");
-
path.Replace("\\bin\\Debug","\\Resource\\People\\VisitingFaculty.txt");
上面的两个似乎都不起作用,因为字符串保持不变并且什么也没有替换。难道我做错了什么?
关于SQL替换字符串中的多个不同字符的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c# – LINQ lambda表达式替换字符串中的多个字符?、c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?、C++ 有没有办法替换字符串中的多个标记、C#字符串替换实际上并不替换字符串中的值的相关知识,请在本站寻找。
本文标签: