• c# 占位符的使用

    2017-02-27 17:39:58
    举个简单的例子来讲 int n1 = 10; int n2 = 20; int n3 = 30; Console.WriteLine("第一个数字是"+n1+"第二个数字是"+n2+"第三个数字是"+n3); ...输出的结果是:第一个数字...如果换做占位符来说的话 会比较灵活轻松一点

    举个简单的例子来讲

    int n1 = 10;
    int n2 = 20;
    int n3 = 30;
    Console.WriteLine("第一个数字是"+n1+"第二个数字是"+n2+"第三个数字是"+n3);
             
               

    输出的结果是:

    输出的结果是:

    第一个数字是10第二个数字是20第三个数字是30

    这是最基本的写法如果换做占位符来说的话 会比较灵活轻松一点

    int n1 = 10;
    int n2 = 20;
    int n3 = 30;
    Console.WriteLine("第一个数字是{0},第二个数字是{1},第三个数字是{2}", n1, n2, n3);




    输出的结果还是一样的;
    要注意的是
    1:这个过程就像挖坑,和填坑的过程是一样的。挖了几个就填几个。
    1)如果改变n1,n2,n3的位置会怎么样呢
    Console.WriteLine("第一个数字是{0},第二个数字是{1},第三个数字是{2}", n2, n1, n3);


    答案是 输出的结果也会变的;
    2)如果改变{}里面的内容会怎么样呢
    Console.WriteLine("第一个数字是{1},第二个数字是{2},第三个数字是{0}", n2, n1, n3);


    答案是 会按照后面的结果来排的;


    2:如果多填写了会怎么样呢
    Console.WriteLine("第一个数字是{1},第二个数字是{2},第三个数字是{0}", n2, n1, n3,n4);


    答案是 控制台还是会输出的 但是不会输出n4 
    3:如果少填写了会怎么样呢
    Console.WriteLine("第一个数字是{1},第二个数字是{2},第三个数字是{0}", n2, n1);


    答案是会报错的

    展开全文
  • html代码: table{ border-collapse:collapse; /* collapse:合并相邻的边框; separate:默认值,边框独立。*/ border-spacing:2px; /* 设置单元格间距。如果设置了合并边框,则此设置无效。 */

    html代码:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <style type="text/css">
            table{
                border-collapse:collapse;   /* collapse:合并相邻的边框; separate:默认值,边框独立。*/
                border-spacing:2px;         /* 设置单元格间距。如果设置了合并边框,则此设置无效。 */
            }
    
            th,td{
                border:1px solid green;     /* 设置单元格的边框 */
                padding:20px;               /* 设置单元格内边距(内容到单元格的距离) */
            }
        </style>
    </head>
    <body>
        <table>
            <tr>
                <th>用户名</th>
                <th>密码</th>
            </tr>
            <tr>
                <td>$userName</td>
                <td>$userPwd</td>
            </tr>
        </table>
    </body>
    </html>
    
    一般处理程序代码:

    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    using System.IO;
    
    public class Handler : IHttpHandler {
        
        // HttpContext 中封装了所有客户端发送的请求信息,以及服务器返回给客户端浏览器的信息。
        public void ProcessRequest (HttpContext context) {
            
            // 以文本的方式输出字符串;
            //context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
    
            // 设置以html模板的格式输出;
            context.Response.ContentType = "text/html";
    
            // 获取html文件的物理路径。对文件或者文件夹进行操作时,必须先获取文件的物理路径。
            string filePath = context.Request.MapPath("HtmlPage.html");
            // 读取html模板内容;
            string strHtml = File.ReadAllText(filePath);
            // 替换掉html中的占位符,返回的是替换占位符之后的html模块;
            strHtml = strHtml.Replace("$userName", "张三").Replace("$userPwd", "112233");
            // 将修改后的html模板输出到浏览器;
            context.Response.Write(strHtml);
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    如果直接在浏览器上打开html页面,效果如下,是没有替换掉占位符的状态:


    直接在浏览器上打开一般处理程序,效果如下:



    展开全文
  • 我想更改在UITextField控件设置的占位符文本的颜色,以使其变为黑色。 我宁愿在不使用普通文本作为占位符的情况下执行此操作,也不必重写所有方法来模仿占位符的行为。 我相信如果我

    我想更改在UITextField控件中设置的占位符文本的颜色,以使其变为黑色。

    我宁愿在不使用普通文本作为占位符的情况下执行此操作,也不必重写所有方法来模仿占位符的行为。

    我相信如果我重写此方法:

    - (void)drawPlaceholderInRect:(CGRect)rect
    

    那么我应该能够做到这一点。 但是我不确定如何从此方法中访问实际的占位符对象。


    #1楼

    我是Xcode的新手,我找到了一种实现相同效果的方法。

    我将uilabel放置在所需格式的占位符上,并将其隐藏在

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
        switch (textField.tag)
        {
            case 0:
                lblUserName.hidden=YES;
                break;
    
            case 1:
                lblPassword.hidden=YES;
                break;
    
            default:
                break;
        }
    }
    

    我同意它是可以解决的,而不是真正的解决方案,但是从此链接获得的效果是相同的

    注意:iOS 7上仍然可以使用:


    #2楼

    由于iOS 6在UIViews中引入了属性字符串,因此可以为占位符文本分配颜色,如下所示:

    if ([textField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
      UIColor *color = [UIColor blackColor];
      textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholderText attributes:@{NSForegroundColorAttributeName: color}];
    } else {
      NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0");
      // TODO: Add fall-back code to set placeholder color.
    }
    

    #3楼

    我需要保持占位符对齐,因此亚当的答案对我来说还不够。

    为了解决这个问题,我使用了一个小的变体,希望对您有所帮助:

    - (void) drawPlaceholderInRect:(CGRect)rect {
        //search field placeholder color
        UIColor* color = [UIColor whiteColor];
    
        [color setFill];
        [self.placeholder drawInRect:rect withFont:self.font lineBreakMode:UILineBreakModeTailTruncation alignment:self.textAlignment];
    }
    

    #4楼

    对于使用Monotouch(Xamarin.iOS)的用户,以下是亚当的答案,已翻译为C#:

    public class MyTextBox : UITextField
    {
        public override void DrawPlaceholder(RectangleF rect)
        {
            UIColor.FromWhiteAlpha(0.5f, 1f).SetFill();
            new NSString(this.Placeholder).DrawString(rect, Font);
        }
    }
    

    #5楼

    对于iOS7及以下版本,我能做的最好的事情是:

    - (CGRect)placeholderRectForBounds:(CGRect)bounds {
      return [self textRectForBounds:bounds];
    }
    
    - (CGRect)editingRectForBounds:(CGRect)bounds {
      return [self textRectForBounds:bounds];
    }
    
    - (CGRect)textRectForBounds:(CGRect)bounds {
      CGRect rect = CGRectInset(bounds, 0, 6); //TODO: can be improved by comparing font size versus bounds.size.height
      return rect;
    }
    
    - (void)drawPlaceholderInRect:(CGRect)rect {
      UIColor *color =RGBColor(65, 65, 65);
      if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
        [self.placeholder drawInRect:rect withAttributes:@{NSFontAttributeName:self.font, UITextAttributeTextColor:color}];
      } else {
        [color setFill];
        [self.placeholder drawInRect:rect withFont:self.font];
      }
    }
    

    #6楼

    iOS 6和更高版本在UITextField上提供了attributedPlaceholder 。 iOS 3.2及更高版本在NSMutableAttributedString上提供了setAttributes:range: NSMutableAttributedString

    您可以执行以下操作:

    NSMutableAttributedString *ms = [[NSMutableAttributedString alloc] initWithString:self.yourInput.placeholder];
    UIFont *placeholderFont = self.yourInput.font;
    NSRange fullRange = NSMakeRange(0, ms.length);
    NSDictionary *newProps = @{NSForegroundColorAttributeName:[UIColor yourColor], NSFontAttributeName:placeholderFont};
    [ms setAttributes:newProps range:fullRange];
    self.yourInput.attributedPlaceholder = ms;
    

    #7楼

    在iOS7中处理垂直和水平对齐以及占位符的颜色。 drawInRect和drawAtPoint不再使用当前上下文fillColor。

    https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html

    对象

    @interface CustomPlaceHolderTextColorTextField : UITextField
    
    @end
    
    
    @implementation CustomPlaceHolderTextColorTextField : UITextField
    
    
    -(void) drawPlaceholderInRect:(CGRect)rect  {
        if (self.placeholder) {
            // color of placeholder text
            UIColor *placeHolderTextColor = [UIColor redColor];
    
            CGSize drawSize = [self.placeholder sizeWithAttributes:[NSDictionary dictionaryWithObject:self.font forKey:NSFontAttributeName]];
            CGRect drawRect = rect;
    
            // verticially align text
            drawRect.origin.y = (rect.size.height - drawSize.height) * 0.5;
    
            // set alignment
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
            paragraphStyle.alignment = self.textAlignment;
    
            // dictionary of attributes, font, paragraphstyle, and color
            NSDictionary *drawAttributes = @{NSFontAttributeName: self.font,
                                         NSParagraphStyleAttributeName : paragraphStyle,
                                         NSForegroundColorAttributeName : placeHolderTextColor};
    
    
            // draw
            [self.placeholder drawInRect:drawRect withAttributes:drawAttributes];
        }
    }
    
    @end
    

    #8楼

    您可以使用以下代码将占位符文本颜色更改为所需的任何颜色。

    UIColor *color = [UIColor lightTextColor];
    YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];
    

    #9楼

    也许您想尝试这种方式,但是Apple可能会警告您有关访问私有ivar的信息:

    [self.myTextField setValue:[UIColor darkGrayColor] 
                    forKeyPath:@"_placeholderLabel.textColor"];
    

    注意
    根据MartinAlléus的说法,这不再适用于iOS 7。


    #10楼

    为什么不只使用UIAppearance方法:

    [[UILabel appearanceWhenContainedIn:[UITextField class], nil] setTextColor:[UIColor whateverColorYouNeed]];
    

    #11楼

    简单且无痛苦,对于某些人来说可能是一个简单的选择。

    _placeholderLabel.textColor
    

    不建议生产,Apple可能会拒绝您的提交。


    #12楼

    [txt_field setValue:ColorFromHEX(@"#525252") forKeyPath:@"_placeholderLabel.textColor"];
    

    #13楼

    以下仅适用于iOS6 +(如Alexander W的评论所示):

    UIColor *color = [UIColor grayColor];
    nameText.attributedPlaceholder =
       [[NSAttributedString alloc]
           initWithString:@"Full Name"
           attributes:@{NSForegroundColorAttributeName:color}];
    

    #14楼

    类别FTW。 可以进行优化以检查有效的颜色变化。


    #import <UIKit/UIKit.h>
    
    @interface UITextField (OPConvenience)
    
    @property (strong, nonatomic) UIColor* placeholderColor;
    
    @end
    
    #import "UITextField+OPConvenience.h"
    
    @implementation UITextField (OPConvenience)
    
    - (void) setPlaceholderColor: (UIColor*) color {
        if (color) {
            NSMutableAttributedString* attrString = [self.attributedPlaceholder mutableCopy];
            [attrString setAttributes: @{NSForegroundColorAttributeName: color} range: NSMakeRange(0,  attrString.length)];
            self.attributedPlaceholder =  attrString;
        }
    }
    
    - (UIColor*) placeholderColor {
        return [self.attributedPlaceholder attribute: NSForegroundColorAttributeName atIndex: 0 effectiveRange: NULL];
    }
    
    @end
    

    #15楼

    覆盖drawPlaceholderInRect:是正确的方法,但是由于API(或文档)中的错误而无法使用。

    该方法永远不会在UITextField上调用。

    另请参见UITextField上的drawTextInRect未调用

    您可以使用digdog的解决方案。 由于我不确定是否能通过Apple审查,因此我选择了另一种解决方案:用我自己的标签覆盖文本字段,以模仿占位符行为。

    不过这有点混乱。 代码看起来像这样(注意,我正在TextField的子类中执行此操作):

    @implementation PlaceholderChangingTextField
    
    - (void) changePlaceholderColor:(UIColor*)color
    {    
        // Need to place the overlay placeholder exactly above the original placeholder
        UILabel *overlayPlaceholderLabel = [[[UILabel alloc] initWithFrame:CGRectMake(self.frame.origin.x + 8, self.frame.origin.y + 4, self.frame.size.width - 16, self.frame.size.height - 8)] autorelease];
        overlayPlaceholderLabel.backgroundColor = [UIColor whiteColor];
        overlayPlaceholderLabel.opaque = YES;
        overlayPlaceholderLabel.text = self.placeholder;
        overlayPlaceholderLabel.textColor = color;
        overlayPlaceholderLabel.font = self.font;
        // Need to add it to the superview, as otherwise we cannot overlay the buildin text label.
        [self.superview addSubview:overlayPlaceholderLabel];
        self.placeholder = nil;
    }
    

    #16楼

    在Swift中:

    if let placeholder = yourTextField.placeholder {
        yourTextField.attributedPlaceholder = NSAttributedString(string:placeholder, 
            attributes: [NSForegroundColorAttributeName: UIColor.blackColor()])
    }
    

    在Swift 4.0中:

    if let placeholder = yourTextField.placeholder {
        yourTextField.attributedPlaceholder = NSAttributedString(string:placeholder, 
            attributes: [NSAttributedStringKey.foregroundColor: UIColor.black])
    }
    

    #17楼

    对于iOS 6.0 +

    [textfield setValue:your_color forKeyPath:@"_placeholderLabel.textColor"];
    

    希望能帮助到你。

    注意: 由于我们正在访问私有API,Apple可能会拒绝(0.01%的机会)您的应用程序。 自两年以来,我在所有项目中都使用了此功能,但Apple并没有要求这样做。


    #18楼

    在Swift <3.0中可以使用:

    myTextField.attributedPlaceholder = 
    NSAttributedString(string: "placeholder text", attributes: [NSForegroundColorAttributeName : UIColor.redColor()])
    

    在iOS 8.2和iOS 8.3 beta 4中进行了测试。

    斯威夫特3:

    myTextfield.attributedPlaceholder =
    NSAttributedString(string: "placeholder text", attributes: [NSForegroundColorAttributeName : UIColor.red])
    

    斯威夫特4:

    myTextfield.attributedPlaceholder =
    NSAttributedString(string: "placeholder text", attributes: [NSAttributedStringKey.foregroundColor: UIColor.red])
    

    Swift 4.2:

    myTextfield.attributedPlaceholder =
    NSAttributedString(string: "placeholder text", attributes: [NSAttributedString.Key.foregroundColor: UIColor.red])
    

    #19楼

    我已经遇到了这个问题。 就我而言,以下代码是正确的。

    目标C

    [textField setValue:[UIColor whiteColor] forKeyPath:@"_placeholderLabel.textColor"];
    

    对于Swift 4.X

    tf_mobile.setValue(UIColor.white, forKeyPath: "_placeholderLabel.textColor")
    

    对于iOS 13 Swift代码

    tf_mobile.attributedPlaceholder = NSAttributedString(string:"PlaceHolder Text", attributes: [NSAttributedString.Key.foregroundColor: UIColor.red])
    

    您还可以针对iOS 13使用以下代码

    let iVar = class_getInstanceVariable(UITextField.self, "_placeholderLabel")!
    let placeholderLabel = object_getIvar(tf_mobile, iVar) as! UILabel
    placeholderLabel.textColor = .red
    

    希望对您有所帮助。


    #20楼

    您可以像这样重写drawPlaceholderInRect:(CGRect)rect来手动呈现占位符文本:

    - (void) drawPlaceholderInRect:(CGRect)rect {
        [[UIColor blueColor] setFill];
        [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
    }
    

    #21楼

    同样在情节提要中,无需单行代码

    在此处输入图片说明


    #22楼

    这样我们就可以在iOS中更改文本字段占位符文本的颜色

    [self.userNameTxt setValue:[UIColor colorWithRed:41.0/255.0 green:91.0/255.0 blue:106.0/255.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];
    

    #23楼

    对于具有多种颜色的设置属性文本字段占位符,

    只需指定Text,

      //txtServiceText is your Textfield
     _txtServiceText.placeholder=@"Badal/ Shah";
        NSMutableAttributedString *mutable = [[NSMutableAttributedString alloc] initWithString:_txtServiceText.placeholder];
         [mutable addAttribute: NSForegroundColorAttributeName value:[UIColor whiteColor] range:[_txtServiceText.placeholder rangeOfString:@"Badal/"]]; //Replace it with your first color Text
        [mutable addAttribute: NSForegroundColorAttributeName value:[UIColor orangeColor] range:[_txtServiceText.placeholder rangeOfString:@"Shah"]]; // Replace it with your secondcolor string.
        _txtServiceText.attributedPlaceholder=mutable;
    

    输出:-

    在此处输入图片说明


    #24楼

    迅捷版。 可能会帮助某人。

    class TextField: UITextField {
       override var placeholder: String? {
            didSet {
                let placeholderString = NSAttributedString(string: placeholder!, attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
                self.attributedPlaceholder = placeholderString
            }
        }
    }
    

    #25楼

    对于Xamarin.iOS开发人员,我从此文档https://developer.xamarin.com/api/type/Foundation.NSAttributedString/中找到了它

    textField.AttributedPlaceholder = new NSAttributedString ("Hello, world",new UIStringAttributes () { ForegroundColor =  UIColor.Red });
    

    #26楼

    另一个不需要子类化的选项-将占位符留空,然后在“编辑”按钮的顶部放置一个标签。 就像管理占位符一样管理标签(用户输入任何内容时清除。)


    #27楼

    Swift 3.0 +故事板

    为了在情节提要中更改占位符颜色,请使用下一个代码创建扩展。 (可以随意更新此代码,如果您认为它可以更清晰,更安全)。

    extension UITextField {
        @IBInspectable var placeholderColor: UIColor {
            get {
                guard let currentAttributedPlaceholderColor = attributedPlaceholder?.attribute(NSForegroundColorAttributeName, at: 0, effectiveRange: nil) as? UIColor else { return UIColor.clear }
                return currentAttributedPlaceholderColor
            }
            set {
                guard let currentAttributedString = attributedPlaceholder else { return }
                let attributes = [NSForegroundColorAttributeName : newValue]
    
                attributedPlaceholder = NSAttributedString(string: currentAttributedString.string, attributes: attributes)
            }
        }
    }
    

    在此处输入图片说明

    Swift 4版本

    extension UITextField {
        @IBInspectable var placeholderColor: UIColor {
            get {
                return attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor ?? .clear
            }
            set {
                guard let attributedPlaceholder = attributedPlaceholder else { return }
                let attributes: [NSAttributedStringKey: UIColor] = [.foregroundColor: newValue]
                self.attributedPlaceholder = NSAttributedString(string: attributedPlaceholder.string, attributes: attributes)
            }
        }
    }
    

    Swift 5版本

    extension UITextField {
        @IBInspectable var placeholderColor: UIColor {
            get {
                return attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor ?? .clear
            }
            set {
                guard let attributedPlaceholder = attributedPlaceholder else { return }
                let attributes: [NSAttributedString.Key: UIColor] = [.foregroundColor: newValue]
                self.attributedPlaceholder = NSAttributedString(string: attributedPlaceholder.string, attributes: attributes)
            }
        }
    }
    

    #28楼

    在Swift 3中

    import UIKit
    
    let TEXTFIELD_BLUE  = UIColor.blue
    let TEXTFIELD_GRAY  = UIColor.gray
    
    class DBTextField: UITextField {
        /// Tetxfield Placeholder Color
        @IBInspectable var palceHolderColor: UIColor = TEXTFIELD_GRAY
        func setupTextField () {
            self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "",
                                                                attributes:[NSForegroundColorAttributeName: palceHolderColor])
        }
    }
    
    class DBLocalizedTextField : UITextField {
        override func awakeFromNib() {
            super.awakeFromNib()
            self.placeholder = self.placeholder
        }
    }
    

    #29楼

    迅速3.X

    textField.attributedPlaceholder = NSAttributedString(string: "placeholder text", attributes:[NSForegroundColorAttributeName: UIColor.black])
    

    迅速5

    textField.attributedPlaceholder = NSAttributedString(string: "placeholder text", attributes: [NSAttributedString.Key.foregroundColor : UIColor.black])
    

    #30楼

    Swift 4.1的此解决方案

        textName.attributedPlaceholder = NSAttributedString(string: textName.placeholder!, attributes: [NSAttributedStringKey.foregroundColor : UIColor.red])
    

    #31楼

    带CAVEAT的Swift 5。

    let attributes = [ NSAttributedString.Key.foregroundColor: UIColor.someColor ]
    let placeHolderString = NSAttributedString(string: "DON'T_DELETE", attributes: attributes)
    txtField.attributedPlaceholder = placeHolderString
    

    请注意,即使在其他代码中设置了该字符串,也必须在“ DON'T_DELETE”所在的位置输入非空String 。 可能会节省您五分钟的时间。

    展开全文
  • 项目在非classpath下建立不同环境的properties文件,右侧选择的哪个profile则在classpath下生成的所有配置文件用到的环境配置的值都是右侧指定的profile的环境配置文件的。如果右侧没有选择任何profile,则使用...

    项目中在classpath下建立不同环境的properties文件,右侧选择的哪个profile则在classpath下生成的所有配置文件用到的环境配置中的值都是右侧指定的profile的环境配置文件的。如果右侧没有选择任何profile,则使用的是pom.xml中配置为true的 profile来生成classpath下的配置文件,如果都为false的话则使用外层<properties> 下的<env>dev</env>指定的来生成。优先级:右侧,里properties,外properties。

    maven配置环境切换指定了某环境的基础.properties文件后,spring项目<context:property-placeholder

    (给spring容器的所有xml使用)中所有的properties文件中的${}都能被基础propertie文件自动替换,但项目中的xml文件中的${}不能被任何.properties文件替换包括基础.properties文件,需要配置placeHolder来指定哪个配置文件properties去替换xml中的${}。指定过一次某个.properties文件去替换xml的${}的话你去掉placeHolder依然生效,估计是有缓存。logback.xml有时候能被替换有时候替换不了暂不详。

    预发环境可以更改配置文件没错,但更改的是已生成的。不会更改非classpath下的profile的。其实他就是改了下配置文件然后重启了下应用而已,不建议这么改,会导致本地和预发文件不同步。

     

    <context:property-placeholder>=替换+注入(必须有替换)

    <context:property-placeholder>必须配置properties文件,<loon-context:property不配置的话默认会加载所有properties

    只有替换可以,只有注入不行

    spring配置文件(xml文件,properties配置文件不能使用占位符)读取properties文件中的变量:在入口或第一个使用该配置文件的配置文件中配置都可以(引入的后续配置文件不用再配)

    PropertySourcesPlaceholderConfigurer作用:(只是将占位符转为map的话不需配第二个bean注入)替换目标文件的占位符——将目标properties文件读取并生成key value的map集合

    只是为了给xml中的占位符使用,xml的占位符未用到的话可以不配该.properties

    也可使用标签来代替此bean:<context:property-placeholder(此标签附带PropertiesFactoryBean的功能,程序中可以读取properties配置文件的值)

    <context:property-placeholder>标签在Spring配置文件中只能存在一份(当然标签和bean声明也只能用一个不能两个都要)!!!Spring容器是采用反射扫描的发现机制,通过标签的命名空间实例化实例,当Spring探测到容器中有一个org.springframework.beans.factory.config.PropertyPlaceholderCVonfigurer的Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描,即只能存在一个实例。<context:property-placeholderlocation="classpath:db.properties,classpath:monitor.properties" />

    <!-- 属性文件读入 -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:common.properties</value>
                <value>classpath:important.properties</value>
            </list>
        </property>
    </bean>
    
    <bean id="jdBankpro"
          class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location" value="classpath:jdbank.properties"/>
        <property name="fileEncoding" value="UTF-8"></property>
    </bean>

     

    PropertiesFactoryBean的作用:将上一步转换成的hashmap注入到spring容器中(代码中还需使用@value获取)。

    在PropertySourcesPlaceholderConfigurer的基础上,将.properties配置文件注入到了spring容器中,在程序中可以获取到值。(切记基础是上面的PropertySourcesPlaceholderConfigurer的声明)

    不用项目间读取配置:

    只要有依赖关系,被依赖的项目也可以反过来去读取其他项目的配置文件

    ApplicationContext context = new ClassPathXmlApplicationContext("/jimclient.xml");service读取webapp的
    CLIENT_INSTANCE = (Cluster)context.getBean("jimClientHC");

     

    profile下多个环境配置可以建在resources下也可以建在main包下,maven配好即可读取。若不是被maven读取的配置文件,必须建在resopurces下才能被<context:property-placeholder去配置读取。且@Value注解的使用基础也是配置上标<context:property-placeholder

    <context:property-placeholder配置的properties可以和maven指定加载的prpperties通过app.env连接起来:app.env=${app.env}app.env=local
    展开全文
  • 2、.net框架是多平台的应用程序,框架的设计方式使它使用于下列语言:C#、C++、Visual Basic、Jscript、COBOL,这些语言之间可以彼此交互,当然java语言也能与C#的交互 二、类与方法 类一般包含了多个方法...

    一、.net框架(.Net Framework)

    在.net平台上可以编写出下面类型的应用程序:

    • Windows应用程序
    • Web应用程序
    • Web服务

      2、.net框架是多平台的应用程序,框架的设计方式使它使用于下列语言:C#、C++、Visual Basic、Jscript、COBOL,这些语言之间可以彼此交互,当然java语言也能与C#的交互

    二、类与方法

    类一般包含了多个方法,方法定义了类的行为

    以下几点值得注意:

    1. C#大小写敏感;
    2. 所有程序和表达式必须是分号(;)结尾;
    3. 程序执行从Main方法开始;
    4. 与java不同的是,文件名可以不同于类名(ps:java中的public修饰的类要和文件名一样)

    在面对对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的class中。
    eg,Rectangle(矩形)类实现demo:

    public class Rectangle
        {
            double length;
            double width;
            public void acceptDetail()
            {
                length = 4.5;
                width = 3.5;
            }
            public double getArea()
            {
                return length * width;
            }
            public void disPlay()
            {
                Console.WriteLine("length is {0}" , length);
                Console.WriteLine("width is {0}", width);
                Console.WriteLine("Area is {0}", getArea());
    
            }
    class Test
    {
        static void Main(string[] args)
            {
                Rectangle rectangle = new Rectangle();
                rectangle.acceptDetail();
                rectangle.disPlay();
                Console.ReadKey();
            }
    }

    运行结果:
    这里写图片描述
    注意:C#中的占位符需要一一对应

                Console.WriteLine("A:{1},B:{0}", 66, 88);
                Console.ReadKey();

    运行结果:
    这里写图片描述
    ps:类的实例化就是new对象,除了这个以外还有工厂模式等使用create()方法来造对象;

    (1)、标识符:
    用来标识类、变量、函数或任何其他用户定义的项目,在C#中,类的命名规则为:

    • 标识符必须以字母、下划线或@开头,后面可以跟一系列的字母、数字(0-9)、下划线(_)、@;
    • 标识符中第一个字符不能是数字;
    • 标识符必须不能包含任何嵌入的空格或符号,比如?-+!#%&……。;:“‘/*;
    • 标识符不能是C#关键字,除非它有一个 @前缀,eg:@if是有效的标识符,但是if不是;
    • 标识符必须区分大小写;
    • 不能与C#类库名称相同

      **

    三、C#关键字

    **
    在C#中,有些关键字在代码上下文有特殊的意义,如get和set,这些被称为上下文关键字(contextual keywords).
    下表列出了C#的保留关键字(Reserved Keywords)和上下文关键字 (contextual Keywords)
    这里写图片描述
    这里写图片描述

    **

    四、C#中的//和///注释的区别

    **
    C#引入了新的XML注释,即///;
    {1}、//不会被编译,而///会被编译,所以使用了///会减慢编译速度(但不会影响执行速度)
    {2}、使用///会在其他类中调用代码时提供智能感知(通常在Form,Designer.cs创举哦会自动生成///注释的程序)
    {3}、以///方式修类、属性、方法加上注释之后,当你在其他地方使用以这种方式加上的类,属性,方法等的时候,提示框会把你写的注释显示出来,让你更加明白你要使用的功能的作用。
    C#引入新的xml注释,即哦我吗在某个函数前起一行,输入///,VS.Net会自动增加XML格式的注释,这里整理一下看用的XML注释。XML注释分为一级注释(Primary Tags)和二级注释(Secondary Tags),前者可以单独存在,后者必须包含在一级注释内部。
    一级注释

    1. 对共有类型的类、方法、属性或字段进行注释;
    2. 主要用于对属性的注释,表示属性的制的含义,可以配合使用;
    3. 对类型进行描述,功能类似,据说建议使用 ;
    4. 用于对方法的参数进行说明,格式:value;
    5. 用于定义方法的返回值,对于一个方法,输入///后,会自动添加、、;
    6. 定义可能抛出的异常,格式:;
    7. 用于给出如何使用某而方法、属性或者字段的使用方法;
    8. 涉及方法的访问许可;
    9. 用于参考某个其他的东西,也可以通过cref设置属性;
    10. 用于指示外部的XML注释;
      二级注释

    11. or 主要用于加入代码段;

    12. 的作用类似于HTML中的

      标记符,就是分段;

    13. 用于引用某个参数;
    14. 作用类似于,可以指示其他的方法;
    15. 用于生成一个列表;
    16. 还可以自定义XML标签
      2》、让C#智能注释多行显示
      在C#智能指示时,常希望它能在开发时显示为换行,使得提示更加友好!实际上很简单,只需要在类似、、等标记中添加标记即可。

    C#数据类型

    在C#中,变量分为以下几种类型:

    • 值类型(Value types)
    • 引用类型(Reference types)
    • 指针类型(Pointer types)
      值类型
      值类型变量可以直接分配给一个值。它们是从类System.ValueType中派生的。
      值类型直接包含数据,比如int、char、float
      下表列出了可用的值类型:
      这里写图片描述

    若需要得到一耳光类型或者变量在特定平台上的准确尺寸,可以使用sizeof方法,表达式sizeof(type)产生以字节为单位存储对象或类型的存储尺寸,eg:获取任何机器上的int类型的存储尺寸

     static void Main(string[] args)
            {
                Console.WriteLine("size of int is:{0}", sizeof(int));
                Console.ReadKey();
            }

    运行结果为:
    这里写图片描述

    引用类型(Reference types)
    引用类型不包含存储在变量中的实际数据,但包含对变量的引用;即指的是内存地址,引用类型可以指向一个内存位置,如果内存位置的数据由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string
    1、对象(object)类型
    object类型是通用类型系统(Common Type System-CTS)中所有数据类型的终极基类。Object是System.Object类的别名。所以Object类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是在分配值之前,需要先进行类型转换。
    当一个值类型转换为对象类型时,被称为装箱;另一方面,当一个对象类型转换为值类型时,被称为拆箱。eg:

    object obj;
    obj = 100;//这是装箱

    2、动态(Dynamic)类型
    可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。
    声明动态类型的语法:

    //dynamic < variable_name >= value;
    dynamic d = 20;

    动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查时在运行时发生的。

    3、字符串(String)类型

    String类型允许给变量分配任何字符串值。String类型是System.String 类的别名。它是从Object类型派生的。String类型的值可以通过两种形式进行分配:引号和@引号。eg:

    String str = "baidu.com";

    一个@引号字符串:

    @"baidu.com"

    C# String字符串前面可以加@(称为“逐字字符串”)将转义字符(\)当成普通字符对待,eg

    String daStr = @"C:\Windows";

    等价于:

    String daStr = "C:\\Windows";

    @字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内

    String str = @"<script type=""text/javascript"">
    <!--
    -->
    </script >";

    用户自定义类型有:class、interface或delegate.

    指针类型(Pointer types)
    指针类型变量存储另一种类型的内存地址。C#中的指针与C或C++中的指针有相同的功能。
    声明指针类型的语法:

    type* indentifier;

    eg:

    char* cptr;
    int* iptr;

    笔记:
    一、关于装箱和拆箱

    • 装箱:值类型转换为对象类型,eg:
    int val = 8;
    object obj = val;//整型转换为独享类型(装箱)

    拆箱:之前由值类型转换而来的对象类型再转回值类型,eg:

                int val = 66;
                object obj = val;//装箱
                int nval = (int)obj;//拆箱

    注意:只有装过箱的数据才能拆箱
    装箱需要耗费人力和工时(即消耗cpu和内存)同理,拆箱也需要耗费人力和工时。
    二、obj(引用)与int(值类型)之间的关系

                 int val = 55;
                object obj = val;
                obj = 52;
                Console.WriteLine("val的值为:{0}", val);
                Console.WriteLine("obj的值为:{0}",obj);
                Console.ReadKey();

    运行结果:
    这里写图片描述
    可以看出,引用类型只是复制了值类型的值出啦,然后对其进行操作,而不会改变原来的值类型的值。

    三、C#中的string 和String的区别
    stringshi C#中的类,String是.net Framework的类(在C#IDE中不会显示蓝色)c#string映射为.net Framework的String,如果用string,编译器会把它变异成String,so直接用String,会让编译器少做一点点工作。
    如果使用C#,建议使用string,比较符合规范,string始终代表System.String(1.x)或::System.Strig(2.0),String 只有在前面有using System;的时候并且当前命名空间中没有名为String的类型(class,struct,delegate,enum)的时候才代表System.String string 是关键字,string不是,也就是说string不能作为类、结构、枚举、字段、变量、方法、属性的名称,而String可以。
    String 是CLR的类型名称(也算关键字),而string是C#的关键字。string在编译的时候C#编译器会默认将其转换为String。在VS中表现的颜色不同:String是绿色,string是蓝色。
    这里写图片描述
    四、值类型特点:

    1. 不能从值类型派生新类型,但可以结构实现接口。
    2. 值类型不能包含null值;
    3. 每个值类型都具有一个初始化该类型的默认值的隐式默认构造函数;

    每一个值类型都有一个独立的内存区域保存自己的值,调用它的时候调用的是它的值,而引用类型调用的是内存中的地址,比如定义引用类型a1=10,这时候在内存中保存的是10,当把a1赋给a2的时候,他们两个应用的是同一个内存空间,a2的值会保存为a1的值,当把a2改为20,因为a1和a2指向的是同一块内存空间,所以,a1也变成了20,这是引用类型
    值类型是:当a1赋值给a2时,会为a2重新分配一块新的内存空间,保存a1的值(复制一份给a2),当修改a2为20的时候,会在a2的空间中保存20,和a1并无什么关系。

    展开全文
  • 原文:C#格式化字符串转义大括号“{}” 今天,用C#程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法。以前只知“{0}”为索引占位符(即格式项),与参数...
  • ASP.NET Web Forms - 母版页 ...母版页为内容定义了可被内容页覆盖的占位符。输出结果是母版页和内容页的组合。 内容页包含您想要显示的内容。 当用户请求内容页时,ASP.NET 会对页面进行合并以生成结合了...
  • 就不用在拼接的时候去写html标签。 public void ProcessRequest(HttpContext context) { //由于ashx进行字符串拼接太麻烦,直接使用HTML模板,进行字符串替换 context.Response.ContentType = "text/...
  • C# 语言历史版本特性(C# 1.0到C# 8.0汇总) 历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持。微软将C#提交给标准组织ECMA...
  • 虽然不是我写的书,但是我觉得这个很必要提供给网络爱好者,关于安装VS2005这个不用我说了 希望大家都支持我 理解了C#的用途后,就可以学习如何使用它。本章将介绍C#编程的基础知识,并假定您...● 在C#程序中...
  • c#基础

    2019-05-15 20:30:16
    C语言/C#的区别 C语言是面向过程语言 (1+1=2固定的) C#是面向对象语言 (a+b=c...2. .NET Framework包含一个非常大的代码,可以在客户语言(如C#通用面向对象编程技术(oop)来使用这些代码。 01 CLS 公共语...
  • 创建web程序: 通过一般处理程序 创建web应用 这种方法比较麻烦 不拖...在HTML设置占位符 如 <p>$username</p> <p>$passwd</p> 在ashx文件读取HTML文件: string filepath = con...
  • <!--v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#...}-->第一章 .NET与C#1.1初识C#●2000年6月22日,微软公司正式推出
  • 《果壳C# C# 5.0 权威指南》 ========== ========== ========== [作者] (美) Joseph Albahari (美) Ben Albahari [译者] () 陈昇 管学理 曾少宁 杨庆川 [出版] 中国水利水电出版社 [版次] 2013年08月 第1版 ...
  • 心得:在查询数据时,如果查询的内容只是作为某个判断的条件,直接执行用...问题:在用参数接收comboBox信息时,为什么报错,改为占位符的形式就可以(最后一部分代码)   一,首先创建三个表student、t...
  • (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized(窗体以最小化...
  • c#总结

    2017-12-21 16:14:37
    C#是一个简单的、现代的、通用的、面向对象的编程语言,他是由微软开发的。(简介) C#是由Anders Hejlsberg和他的团队在.net框架开发期间开发的。(简介) C#是.net框架的一部分,而.net框架是一个多平台的应用...
  • 将数据库的数据查询...name属性是不可或缺的新建一个html页面和一个一般处理程序,由于本次是将数据库的数据一行一行打印在html上,肯定要用到循环,可以在html页面上写一个$tbody当做占位符在一般处理程序中,首
  • C#中的泛型

    2016-01-17 22:02:48
    C#中的泛型   前言 现在的.NET版本是5.0了,但是在1.1的时候,最受诟病的一个缺陷就是没有对泛型的支持.你想想,对于一种强类型的语言来说,我写了一个针对整数的排序,但是现在又需要对字符串排序,...
  • C#简介

    2012-09-17 15:11:26
    C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它...
1 2 3 4 5 ... 20
收藏数 1,713
精华内容 685