GVKun编程网logo

SQL替换字符串中的多个不同字符

12

在本文中,我们将为您详细介绍SQL替换字符串中的多个不同字符的相关知识,此外,我们还会提供一些关于c#–LINQlambda表达式替换字符串中的多个字符?、c#–正则表达式替换–如何在不同字符串的多个

在本文中,我们将为您详细介绍SQL替换字符串中的多个不同字符的相关知识,此外,我们还会提供一些关于c# – LINQ lambda表达式替换字符串中的多个字符?、c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?、C++ 有没有办法替换字符串中的多个标记、C#字符串替换实际上并不替换字符串中的值的有用信息。

本文目录一览:

SQL替换字符串中的多个不同字符

SQL替换字符串中的多个不同字符

我需要替换字符串中的多个字符。结果不能包含任何“&”或任何逗号。

我目前有:

REPLACE(T2.[ShipToCode],'&','and')

但是,如何输入多个值?

非常感谢!

c# – LINQ lambda表达式替换字符串中的多个字符?

c# – LINQ lambda表达式替换字符串中的多个字符?

是否有可能编写一个lambda表达式,它将迭代对象数组并替换其中一个属性中的’X’,’Y’,”和’Z’的所有出现?

例如.

return query.Select(x => { x.somePropertyName= x.somePropertyName.Trim().Replace(' ',"_"); return x; }).ToList();

出于某种原因,当我需要替换多个字符时,上面的查询不会替换单个字符.

谢谢

解决方法

当我想用一个单独的其他字符替换多个字符中的一个时,我经常使用string.Split和string.Join的组合:

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# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?

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++ 有没有办法替换字符串中的多个标记

如何解决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中从pospos + str1.length()的字符替换为str2

str.replace(pos,str1.length(),str2);

现在,当您拥有该函数时,您可以将其与一些 if 条件一起使用来替换字符串中所需的任何标记

C#字符串替换实际上并不替换字符串中的值

C#字符串替换实际上并不替换字符串中的值

这个问题已经在这里有了答案

string.Replace(或其他字符串修改)不起作用 (4个答案)

2年前关闭。

我正在尝试用另一个字符串替换字符串的一部分。更确切地说,我有 C:\Users\Desktop\Project\bin\Debug

我正在尝试\bin\Debug\Resources\People

我尝试了以下方法:

  1. path.Replace(@"\bin\Debug",@"\Resource\People\VisitingFaculty.txt");

  2. path.Replace("\\bin\\Debug","\\Resource\\People\\VisitingFaculty.txt");

上面的两个似乎都不起作用,因为字符串保持不变并且什么也没有替换。难道我做错了什么?

关于SQL替换字符串中的多个不同字符的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c# – LINQ lambda表达式替换字符串中的多个字符?、c# – 正则表达式替换 – 如何在不同字符串的多个位置替换相同的模式?、C++ 有没有办法替换字符串中的多个标记、C#字符串替换实际上并不替换字符串中的值的相关知识,请在本站寻找。

本文标签: