相关疑难解决方法(0)

不区分大小写'包含(字符串)'

有没有办法让以下返回true?

string title = "ASTRINGTOTEST";
title.Contains("string");
Run Code Online (Sandbox Code Playgroud)

似乎没有一个过载允许我设置区分大小写.目前我大写它们两个,但这只是愚蠢(我指的是上下套管的i18n问题).

更新
这个问题是古老的,从那时起我就意识到,如果你想完全研究它,我会要求一个简单的答案来解决一个非常庞大和困难的话题.
对于大多数情况,在单语言的英语代码库中,这个答案就足够了.我怀疑是因为大多数人来到这个类别这是最受欢迎的答案.然而,
这个答案提出了一个固有的问题,即我们无法比较文本不区分大小写,直到我们知道两个文本是相同的文化并且我们知道文化是什么.这可能是一个不太受欢迎的答案,但我认为它更正确,这就是为什么我这样标记它.

c# string contains case-insensitive

2785
推荐指数
23
解决办法
83万
查看次数

Int32.ToString()是否特定于文化?

我正在运行ReSharper的测试版,它给了我以下代码的警告:

int id;
// ...
DoSomethingWith(id.ToString());
Run Code Online (Sandbox Code Playgroud)

警告在id.ToString()通话中,它告诉我"明确指定字符串转换中的文化".我理解这个警告,而且我知道如何修复它 - 只需将代码更改为更加笨拙id.ToString(CultureInfo.InvariantCulture).

但我的问题是:这是必要的吗?我的意思是,显然,当您使用类型DateTime(不同的文化具有不同的日期格式)和Double(用于小数点的不同字符)时,指定文化很重要.但是Int32.ToString(),至少在en-US和invariant文化中,根本不添加任何格式.没有逗号,没有小数点,没有美元符号,没有.那么文化会有什么不同?

当您调用无参数时,是否有一些文化实际上会添加某种格式Int32.ToString()?或者这是ReSharper测试版中的错误,这个警告真的不适用Int32(在这种情况下我会提交ReSharper错误报告)?

.net c# resharper cultureinfo

64
推荐指数
3
解决办法
2万
查看次数

使用逗号和点将字符串解析为double

我正在尝试编写一个函数,它基本上将字符串数组转换为字符串数组,其中数组中的所有双精度数都舍入为我设置的小数位数.数组中也可以有字符串,它们根本没有双重值.

string[,] values = new string[1, 3];

values[0, 0] = "hello";
values[0, 1] = "0.123";
values[0, 2] = "0,123";

int decimalPlaces = 2;

double tmp;
string format = "F" + decimalPlaces.ToString();
IFormatProvider provider = CultureInfo.InvariantCulture;
for (int i = 0; i < values.GetLength(0); i++)
{
    for (int j = 0; j < values.GetLength(1); j++)
    {
        if (double.TryParse(values[i, j], out tmp))
        {
            values[i, j] = tmp.ToString(format, provider);
        }
    }
}

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

结果必须是:"你好","0.12","0.12",但它是"你好","123.00","0.12"将以错误的方式对待逗号.有没有人有一个简单而有效的解决方案?

c#

55
推荐指数
6
解决办法
14万
查看次数

如何使用适当的cultureinfo将字符串转换为double

我在数据库中有两个nvarchar字段来存储DataType和DefaultValue,我有一个DataType Double,值为65.89875英文格式.

现在我希望用户按照所选的浏览器语言格式查看值(英语中的65.89875应显示为德语中的65,89875).现在,如果用户从德语格式编辑为65,89875(英语为65.89875),而英语浏览器中的其他用户视图则为6589875.

发生这种情况是因为在数据库中它在nvarchar列中存储为65,89875,并且在使用英语文化转换时,它变为6589875,因为它将其视为,分隔符,它是德语的十进制运算符.

如何让这个适用于所有浏览器?

.net c# globalization localization

35
推荐指数
2
解决办法
9万
查看次数

asp.net中的德国UI文化de-DE十进制更改为逗号值问题

我在asp.net应用程序中使用德语UI文化。我正在根据下拉列表中选择的语言更改应用程序的UI文化,在下拉列表中选择的索引更改我正在使用此代码

Thread.CurrentThread.CurrentCulture = new CultureInfo(this.lstLanguage.SelectedValue);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.lstLanguage.SelectedValue);
Run Code Online (Sandbox Code Playgroud)

下拉列表如下

<asp:DropDownList cssClass="ddllanguage" ValidationGroup="b" runat="server" ID="lstLanguage" AutoPostBack="True"  OnSelectedIndexChanged="LstLanguage_SelectedIndexChanged" meta:resourcekey="lstLanguage">                    
  <asp:ListItem Value="en-US" Text="English" meta:resourcekey="ListItemResource2" ></asp:ListItem>
  <asp:ListItem Value="de-DE" Text="Deutsch" meta:resourcekey="ListItemResource3"></asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

我的问题是,将语言更改为de-DE后,我的应用程序中的所有十进制值都将更改为逗号,所有像5.12这样的十进制数都将变为5,12,所有十进制值都将更改为逗号。如何获取没有逗号的十进制值。

c# asp.net

4
推荐指数
2
解决办法
2万
查看次数

Double.Parse无法保留逗号

我正在尝试将字符串转换为double,我有这个值:53.095并尝试将其转换为double:

string doub = "53.095";
var cv = Convert.ToDouble(doub);
Run Code Online (Sandbox Code Playgroud)

我明白了:53095.为什么我没有得到逗号?我错过了什么?

c#

4
推荐指数
1
解决办法
290
查看次数

如何知道给定的字符串是否是有效的UTC DateTime格式?

我需要允许接受UTC日期时间:http://www.w3.org/TR/NOTE-datetime

如:

 - Year:
         YYYY (eg 1997)    Year and month:
         YYYY-MM (eg 1997-07)    Complete date:
         YYYY-MM-DD (eg 1997-07-16)    Complete date plus hours and minutes:
         YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)    Complete date plus hours, minutes and seconds:
         YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)    Complete date plus hours, minutes, seconds and a decimal fraction of
   a second
         YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00) where:

        YYYY = four-digit year
        MM   = two-digit month (01=January, etc.)
        DD   = two-digit day of month (01 through 31)
        hh   = two digits …
Run Code Online (Sandbox Code Playgroud)

c# asp.net datetime parsing

3
推荐指数
1
解决办法
1万
查看次数

以特定模式格式化日期字符串

我有一个以这种格式显示日期格式

4月17日星期二,2018年6月12日

我试过这个

class Program
{
    static void Main(string[] args)
    {
        var today = DateTime.Now.AddDays(-1);
        var day = today.Day;
        var month = today.Month;
        var year = today.Year;

        Console.WriteLine(today);
        Console.WriteLine(day);
        Console.WriteLine(month);
        Console.WriteLine(year);
        var answer = day + "/" + month + "/" + year;
        Console.WriteLine(answer);
        Console.WriteLine(today);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何以星期二,星期三的形式获得全文,也可以将日期更改为上午和下午...我可以在int中获取年份和日期.

.net c# datetime

2
推荐指数
1
解决办法
108
查看次数

调用Number.ToString()并始终在任何区域配置中使用标准小数点?

让我们在C#中假设这一点.

  double d = 5.555455;
  string s = d.ToString();
  Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

输出是

5.555455
Run Code Online (Sandbox Code Playgroud)

就我而言,我的区域配置是"." 作为小数分隔符.问题是计算机的区域配置有时是",",这使输出为:

5,555455
Run Code Online (Sandbox Code Playgroud)

我需要的是确保使用"."将数字始终转换为字符串.作为十进制而没有","作为千分隔符.

我怎样才能做到这一点?

c#

1
推荐指数
1
解决办法
67
查看次数

DateTime.ToString删除斜杠

我想在02/03/20172017年3月3日的mvc视图中注明日期.

随着DateTime.ToString("dd/MM/yyyy") 我只是得到02 03 2017.为什么我的斜线消失了?

c#

0
推荐指数
1
解决办法
867
查看次数