gpt4 book ai didi

c# - string[][] 变为小写

转载 作者:太空宇宙 更新时间:2023-11-03 18:31:15 24 4
gpt4 key购买 nike

我正在努力从头开始制作数据库。我有一个名为 data 的锯齿状数组,我尝试克隆 (lns) 它,克隆 (lns) 变成小写,所以 data 也变成了。但我不想这样!我怎样才能防止这种情况发生? ignorecase 为真。如果我将其设置为 false,则问题不再出现。

你可能不相信,至少我不相信,所以I uploaded a video .

    public string[][] getRows(string[][] data, int columnLength, int index = -1, string arg = "", bool ignoreCase = false, bool getContaining = false)
{
if (index >= columnLength) return null; // I love null!
if (!getContaining && arg == "") return data;

string[][] toReturn = new string[data.Length][];
string[][] lns = data;
int a = 0;

if (ignoreCase)
{
arg = arg.ToLower();
for (int i = 0; i < columnLength; i++)
for (int j = 0; j < lns.Length; j++)
lns[j][i] = lns[j][i].ToLower();
}



if (index >= 0)
{
if (getContaining)
{
for (int i = 0; i < data.Length; i++)
if (lns[i][index].Contains(arg))
{
toReturn[a] = data[i];
// code continues...

编辑: 好的,我现在知道 lns = data 不会生成克隆,而只是生成另一个变量。但是我怎样才能克隆它以便我可以执行这段代码?

最佳答案

string[][] lns = data; 中,赋值期间没有复制/克隆/复制数据数组。

所以 lns[j][i] = lns[j][i].ToLower(); 等价于 data[j][i] = data[j][ i].ToLower(); 修改原始数据/数组。

我会简单地将不区分大小写的内容与条件本身进行比较。简单地说,这可能类似于以下内容 - 请记住删除原始的 if (ignoreCase) {..} 代码。

// Move logic to condition (don't change any data)
if (ignoreCase && lns[i][index].ToLower().Contains(arg.ToLower())
|| lns[i][index].Contains(arg)) {
toReturn[a] = data[i];
// ..

对于更整洁的不区分大小写的替代方案,请参阅 Case insensitive 'Contains(string)'和/或考虑使用谓词 lambda/函数。


好吧,因为我确实在上面提到了“更简洁”的方式..

// Predicate methods (defined in class) 
bool ContainsSensitive (string a, string b) {
return a.Contains(b);
}
bool ContainsInsensitive (string a, string b) {
// From https://stackoverflow.com/a/444818/2864740
return a.IndexOf(b, StringComparison.OrdinalIgnoreCase) >= 0;
}

// In function:
Func<string,string,bool> contains = ignoreCase
? ContainsInsensitive
: ContainsSensitive;

// Move logic to condition, but use predicate function to move
// the actual logic elsewhere.
if (contains(lns[i][index], arg)) {
toReturn[a] = data[i];
// ..

只是 C# 的一些美妙之处值得期待..我可能也会使用 LINQ/IEnumerable 而不是数组。

关于c# - string[][] 变为小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com