如何屏蔽字符串?
我有一个带有" 1131200001103"的字符串. 如何使用response.write(value)? 以这种格式以这种格式显示为字符串? 谢谢 解决方案 这会产生所需的结果 string result = Int64.Parse(s.Remove(5,2)).ToString("00-000-000000"); 假设您想在2个第一个nulls的位置上丢弃2个字符. 其他解决方案 您不想只使用 Substring ? string dashed = text.Substring(0, 2) + "-" + text.Substring(2, 3) + "-" + text.Substring(7); 或: string dashed = string.Format("{0}-{1}-{2}", text.Substring(0, 2),
0 2024-04-15
编程技术问答社区
C#中的自定义字符串格式化器
c#中的字符串格式化; 我可以使用它吗?是的. 我可以实现自定义格式吗?否. 我需要写一些东西,我可以将一组自定义格式选项传递给string.Format,这将对特定项目产生一定的影响. 目前我有这样的东西: string.Format("{0}", item); ,但我希望能够对该项目做事: string.Format("{0:lcase}", item); // lowercases the item string.Format("{0:ucase}", item); // uppercases the item string.Format("{0:nospace}", item); // removes spaces 我知道我可以做.ToUpper(),.ToLower()等的事情,但是我需要使用字符串格式进行操作. 我一直在研究IFormatProvider和IFormattable之类的事情 谁能解释我如何解决这个问题?
0 2024-04-15
编程技术问答社区
String.Format("{0:C2}", | 1234)(货币格式)将负数视为正数
我正在使用String.Format("{0:C2}", -1234)格式数字. 它总是将金额格式化为正数,而我希望它成为$ - 1234 解决方案 我想我会简单地使用: FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False) (在Microsoft.visualbasic.strings模块中) 或简短的单词(这是我实际要使用的): FormatCurrency(-1234.56, 2, 0, 0) ,否则我将使自己成为使用我的自定义参数的VB功能的自定义格式化函数. 有关更多详细信息,请查看 FormatCurrency函数( Visual Basic)在MSDN中. 其他解决方案 我说它将其放在括号中,即它以($1,234.00)的形式将其放在括号中?如果是这样,我相信这是美国的预期行为. 但是,您可以创建自己的NumberForma
0 2024-04-14
编程技术问答社区
C# 如何将一个双数格式化到小数点后一位,而不进行四舍五入
我需要将双重值格式化为一个小数点,而不会舍入. double value = 3.984568438706 string result = ""; 我尝试的是: 1) result = value.ToString("##.##", System.Globalization.CultureInfo.InvariantCulture) + "%"; // returns 3.98% 2) result = value.ToString("##.#", System.Globalization.CultureInfo.InvariantCulture) + "%"; // returns 4% 3) result = value.ToString("##.0", System.Globalization.CultureInfo.InvariantCulture) + "%"; // returns 4.0% 4)(遵循其他建议)
0 2024-04-14
编程技术问答社区
为什么.Net在String.Format中使用的舍入算法与默认的Math.Round()算法不一致?
我注意到C#/.网中的以下不一致.为什么这样? Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.04, Math.Round(1.04, 1)); Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.05, Math.Round(1.05, 1)); Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.06, Math.Round(1.06, 1)); Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.14, Math.Round(1.14, 1)); Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.15, Math.Round(1.15, 1)); Console.WriteLine("{0,-4:#.0} | {1,-4:#.0}", 1.16, Math.Ro
0 2024-04-14
编程技术问答社区
使用数组作为string.Format()的参数
尝试使用数组作为string.Format()方法的参数时,我会收到以下错误: 构造X Ceception:索引(基于零)必须大于或等于零和小于参数列表的大小. 代码如下: place = new int[] { 1, 2, 3, 4}; infoText.text = string.Format("Player1: {0} \n Player2: {1} \n Player3: {2} \n Player4: {3}", place); 数组包含四个值,String.Format()中的参数也相同. 是什么导致此错误? (infoText.text只是一个常规字符串对象) 解决方案 您可以使用System.Linq Select()扩展方法将int数组转换为字符串数组. infoText.text = string.Format("Player1: {0} \nPlayer2: {1} \nPlayer3: {2} \nPlayer4:
0 2024-04-14
编程技术问答社区
如何在String.Format里面放入未处理(转义)的单词
我正在格式化日期: str = String.Format("{0:MMM d m:mm"+yearStr+"}", dt); 我想在" D"之后将单词" at"放置,但我不希望字符串格式化它.我只想要" at". 我该如何实现? 解决方案 您可以用引号包围文字字符串,对于更长的字符串来说,这可能比以后倾斜的每个角色更容易,更易读: str = String.Format("{0:MMM d 'at' m:mm"+yearStr+"}", dt); 请参阅自定义日期和时间格式格式字符串对于"文字字符串定界符"). (您是指h:mm而不是m:mm?) 其他解决方案 string.Format(@"{0:MMM d \a\t m:mm" + yearStr + "}", dt); 注意双逃逸 - 我使用了一个varbatim字符串,因此我能够在字符串中以正常字符来写\. DateTime的格式例程,然后将此(再次)解释为逃生序列. 这
0 2024-04-14
编程技术问答社区
我可以用string.Format格式化NULL值吗?
我想知道是否有一个语法用于格式化null值,例如excel使用 例如,使用excel i可以指定{0:#,000.00;-#,000.00,NULL}的格式值,这意味着显示数值为数字格式,如果为正格式,则在括号中以括号为单位,如果值为null,则null中的数字格式为null,如果值为null null string.Format("${0:#,000.00;(#,000.00);NULL}", someNumericValue); 编辑 我正在寻找所有数据类型的格式NULL/Nothing值,而不仅仅是数字类型. 我的示例实际上是不正确的,因为我错误地认为excel使用了第3个参数,如果值为null,则实际上是在值为0时使用的.我希望做什么. 我希望避免使用零合的运算符,因为我正在编写日志记录,并且数据通常不是字符串 写 之类的东西要容易得多 Log(string.Format("Value1 changes from {0:NULL} t
0 2024-04-14
编程技术问答社区
将int转换为带前导零的hex
如何在没有周期的情况下将int(4个字节)转换为十六进制(" XX XX XX XX")? 例如: i=13 hex="00 00 00 0D" i.ToString("X")返回"D",但我需要一个4 Bytes的十六进制值. 解决方案 您可以通过将要X格式字符串的十六进制数字数附加到X格式字符串中来指定数字的最小数量.由于两个十六进制数字对应于一个字节,因此您的4个字节示例需要8个十六进制数字.即使用i.ToString("X8"). 如果您想要较低的案例字母,请使用x而不是X.例如13.ToString("x8")映射到0000000d. 其他解决方案 尝试以下方法: int innum = 123; string Hex = innum .ToString("X"); // gives you hex "7B" string Hex = innum .ToString("X8"); // gives you hex 8 digit
0 2024-04-14
编程技术问答社区
字符串格式和与标签的多重绑定
我想使用StringFormat这样做的某些事情: 但是,它不起作用,我得到了这个错误: 多点线失败,因为它没有有效的转换器.多接口表达:目标元素为'label'(name ='mylabel');目标属性是" content"(键入"对象") 有什么方法可以使此代码起作用? 解决方案 您无法绑定它,因为您试图将字符串绑定到无法正常工作的对象,因为StringFormat要求其目标是字符串类型.您可以通过使用文本块(具有文本
0 2024-04-14
编程技术问答社区
在String.Format中,{0}是什么意思?
例如.在以下示例中: string commandText = string.Format("Select * from {0}", filename); 上述如何工作? 解决方案 {0}是第一个对象的占位符;在这种情况下是filename,因此它将插入任何评估的文件名代替{0}.同样,您当然可以使用{1},然后将其替换为第二个参数,等等. 其他解决方案 {0}是指传递到String.Format的第二个参数. {1}指的是第三,{2}到第四等.例如: String.Format("The {0} brown {1} jumps {2} the {3} dog.", "quick", "fox", "over", "lazy") 评估 "The quick brown fox jumps over the lazy dog." 其他解决方案 这是指文件名的值. 请参阅MSDN.
0 2024-04-14
编程技术问答社区
有没有一个C#函数可以将一个64位的 "无符号 "值格式化为其等效的二进制值?
要格式/显示其等效二进制形式的数字(在C#中),我总是简单地称为: Convert.ToString(myNumber, 2); 今天,我刚刚意识到我一直在调用的.toString()超载不支持大于9223372036854775807.其中"长"是64位签名值,它是Max的9223372036854775807. 当我运行此操作时,使用C#换句话说: Convert.ToString(9223372036854775808,2); 我收到此例外消息也就不足为奇了: 'system.convert.tostring的最佳超载方法匹配(对象, System.SiformatProvider)'有一些无效的论点 - 参数2:无法从'int'转换为'system.ibers.atprovider' 我的问题:是否有.NET函数可以使我们可以将大于9223372036854775807转换为等效二进制格式? 解决方案 您可以将其称为未签名或签名,但是
0 2024-04-13
编程技术问答社区
在C#中,将一个字符串格式化为XML的最佳方法是什么?
我正在在C#中创建轻量级编辑器,并想知道将字符串转换为格式格式XML字符串的最佳方法.我希望C#库中有一种公共方法,例如" public bool formataSxml(字符串文本,out string string forfxmlText)",但这不是那么容易,可以吗? 非常具体地说," somemethod"的方法必须导致下面的输出? string unformattedXml; string formattedXml; unformattedXml = "Lewis, C.S.The Four Loves" formattedXml = SomeMethod(unformattedXml); Console.WriteLine(formattedXml); 输出:
0 2024-04-13
编程技术问答社区
如何为字符串格式提供自定义的字符串占位符
我有一个字符串 string str ="Enter {0} patient name"; 我正在使用string.format格式化. String.Format(str, "Hello"); 现在,如果我也想从某种配置中检索患者,那么我需要将str更改为类似 "Enter {0} {1} name".因此,它将用第二个值替换{1}.问题是我想要而不是{1}其他一些格式,例如{pat}.但是当我尝试使用时,它会引发错误.我想要另一种格式的原因是,我需要像这样更改很多文件(其中可能包含{0},{1}等).因此,我需要一个可以在运行时更换的自定义占位符. 解决方案 您可能需要检查var user = new User() { Name = "Olle Wobbla", Age = 25 }; Console.WriteLine("Your name is {Name} and your age is {Age}".FormatWith(user)); 您也
0 2024-04-12
编程技术问答社区
浮动到字符串格式指定符
我有一些要转换为字符串的浮点值,我想在转换时保持格式相同,即999.0000(float) - > 999.0000(string).我的问题是,当值之后的值包含任意数量的零数量时,如上一个示例,它们在转换为字符串时被剥离,因此我实际上最终得到的结果是999. > 我在 msdn 上查看了toString()方法的格式指定器往返('r')说明器看起来会产生我想要的东西,但仅对单个,双重和bigint变量得到支持.是否有这样的格式说明符,用于浮动变量?还是只需将值转换为双打会更容易? 更新:为了清楚起见,我要保持尾随零的原因是因为我正在对十进制位置进行比较,即我正在比较两个值之间小数点位置之后的数字数量.因此,例如,1.00和1.00000在小数点之后具有不同数量的数字.我知道这是一个奇怪的要求,是为了工作,并且要求来自高处. 更新2-3-11: 我太努力地考虑了这一点,我正在阅读TXT文件中的数字,然后将它们作为浮子解析,我将修改程序以检查字符串值是小数还是整数.很
0 2024-04-12
编程技术问答社区
C++中的String.Format替代方案
我没有太多与C ++一起工作的经验.相反,我在C#中工作了更多,因此,我想通过与我在那里所做的事情联系来提出问题.我必须生成字符串的特定格式,我必须将其传递给另一个函数.在C#中,我可以轻松地通过以下简单代码生成字符串. string a = "test"; string b = "text.txt"; string c = "text1.txt"; String.Format("{0} {1} > {2}", a, b, c); 通过生成上述字符串,我应该能够在system()中传递.但是,system仅接受char* 我在Win32 C++上(不是C ++/CLI),并且不能使用boost,因为它将包含太多的所有文件来包含一个本身很小的项目.像sprintf()看起来对我有用的东西,但是sprintf不接受string为a,b和c参数.有什么建议我如何生成这些格式化的字符串以传递到我的程序中的系统? 解决方案 您可以与std::string.c_str()组
0 2024-04-12
编程技术问答社区
在C#中计算一个比值
我认为这很简单,但是搜索Google似乎没有帮助. 我基本上试图编写一个函数,该函数将在用两个整数(例如800和600)提供时将比率返回为字符串(例如4:3). string GetRatio(Int A, Int B) { // Code I'm looking for return Ratio; } 解决方案 您可以通过将分子和分母通过其 gcd gcd gcd gcd : var gcd = GCD(A, B); return string.Format("{0}:{1}", A / gcd, B / gcd) 和使用 euclidean algorithm : static int GCD(int a, int b) { return b == 0 ? Math.Abs(a) : GCD(b, a % b); } 其他解决方案 您是否基本上是在尝试获得最大的共同点 - GCD的两个数字,然后将它们分开,从而得到您的字
0 2024-04-11
编程技术问答社区
如何产生 "人类可读 "的字符串来表示一个时间段
我有一个TimeSpan表示客户端已连接到我的服务器的时间.我想向用户显示该TimeSpan.但是我不想过分详细地显示该信息(例如:2hr 32.2345sec =太详细!) 例如:如果连接时间是... > 0 seconds and 0 Seconds > 1 minute and 0 Minutes, 0 Seconds > 1 hour and 0 Hours, 0 Minutes > 1 day -----> 0 Days, 0 Hours 当然,如果数字为1(例如:1秒:1秒,1分钟1小时1天),我想使文本单数(ex:1秒:1秒,1分钟1分,1小时, 1天). 无论如何,是否可以轻松实现此目标,而无需一组巨大的if/else子句?这是我目前正在做的. public strin
0 2024-04-11
编程技术问答社区
String.Format一个整数,使用没有小数位的千位分隔符或小整数的前导0。
愚蠢的问题,我想格式化一个整数,以便它与1000的分隔符(,)一起出现,但也没有小数位,没有领先0. 到目前为止,我的尝试是: String.Format("{0} {1}", 5, 5000); // 5 5000 String.Format("{0:n} {1:n}", 5, 5000); // 5.00 5,000.00 String.Format("{0:0,0} {1:0,0}", 5, 5000); // 05 5,000 我追求的输出是: 5 5,000 我缺少一些明显的东西吗? 解决方案 这对我有用. String.Format("{0:#,0} {1:#,0}", 5, 5000); // 5 5,000 其他解决方案 尝试以下方法: - String.Format("{0:n0}",5000) // 5,000 String.Format("{0:n0}",5) // 5 S
2 2024-04-11
编程技术问答社区