String类功能扩展实现

Java巧思:模拟扩展方法实现,为已有类增添新功能 综上所述,尽管Java本身不直接支持扩展方法,但通过创建工具类、定义静态方法并以接收者对象作为参数,我们可以实现类似效果。Java语言本身并不直接支持类似于C#中的扩展方法(Extension Method)特性,即在不修改原有类的前提下为其添加新方法。此类通常以被扩展类的名称为基础,并加上“Utils”、“Extensions”等后缀,以表明其用途。:在工具类中定义静态方法,该方法接受被扩展类的对象作为第一个参数(通常称为“接收者对象”),并在此基础上实现所需的新功能。类添加一个计算单词数量的方法。 阅读详情

String类是Java语言中常用的一个类,基本在所有的项目开发中都会用到。String类的实例化方式有两种:
1.直接赋值

String str = "Hello Bit";//str是一个对象,那么 "Hello Bit"就应该保存在堆内存中
System.out.println(str);

直接赋值是最常用的实例化方式,但是String 本身是一个类,既然是类,那么类中一定存在构造方法。String 类的其中一种构造方法如下:

public String(String str);

2.传统方法(构造法)

String str = new String ("Hello Bit");
System.out.println(str);

这种方法使用了关键字new进行对象实例化

以下是String类的功能扩展实现:

//String类扩展功能实现
public class Strings{

     /**
     * 1.重复某个字符
     * 
     * 例如: 
     * 'a' 5   => "aaaaa"  
     * 'a' -1  => ""
     * 
     * @param c     被重复的字符
     * @param count 重复的数目,如果小于等于0则返回""
     * @return 重复字符字符串
     */
    public static String repeat(char c, int count) {
       if(count<0){
		   return null;
	   }else{
		   char[] a=new char[count];
		   int i=0;
		   for(i=0;i<count;i++){
			a[i]=c;   
		   }
		   String str=new String(a);
		   return str;
	   }
    }
    
    
     /**
     * 2.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串
     * 字符填充于字符串前
     *
     * 例如: 
     * "abc" 'A' 5  => "AAabc"
     * "abc" 'A' 3  => "abc"
     *
     * @param str        被填充的字符串
     * @param filledChar 填充的字符
     * @param len        填充长度
     * @return 填充后的字符串
     */
    public static String fillBefore(String str, char filledChar, int len) {		
       int length=str.length();
	   if(str==null){
		   return null;
	   }
	   if(len<=length){
		   return str;
	   }else{
		   str=repeat(filledChar,len-length)+str;
	   }
	   return str;
    }
    
    /**
     * 3.将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串<br>
     * 字符填充于字符串后
     * 例如: 
     * "abc" 'A' 5  => "abcAA"
     * "abc" 'A' 3  => "abc"
     *
     * @param str        被填充的字符串
     * @param filledChar 填充的字符
     * @param len        填充长度
     * @return 填充后的字符串
     */
    public static String fillAfter(String str1, char filledChar, int len) {
       int length=str1.length();
	   if(str1==null){
		   return null;
	   }
	   if(len<=length){
		   return str1;
	   }else{
		   str1=str1+repeat(filledChar,len-length);
	   }
	   return str1; 
    }

    /**
     * 4.移除字符串中所有给定字符串
     * 例:removeAll("aa-bb-cc-dd", "-") => aabbccdd
     *
     * @param str         字符串
     * @param strToRemove 被移除的字符串
     * @return 移除后的字符串
     */
    public static String removeAll(CharSequence str2, CharSequence strToRemove) {
		String a=new String(str2.toString());
        if(str2 == null){
			return null;
		}else{
			a=a.replaceAll(strToRemove.toString(),"");
			return a;
		}
    }
    
    /**
     * 5.反转字符串
     * 例如:abcd => dcba
     *
     * @param str 被反转的字符串
     * @return 反转后的字符串
     */
    public static String reverse(String str3) {
        if(str3==null){
			return null;
		}
		char[] b = str3.toCharArray();
		int start=0,tail=b.length-1;
		while(start<tail){
			char temp=b[tail];
			b[tail]=b[start];
			b[start]=temp;
			start++;
			tail--;
		}
		String c=new String(b);
		return c;
	}
    public static void main(String[] args){
		//1.repeat
		char c = 'l';
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,5));
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,0));
		System.out.println("重复的字符为:"+c+"  重复后的字符为:"+repeat(c,-1));
		System.out.println("*************************************");
		//2.在字符串前填充
		String str="tkhlsm";
		System.out.println("填充前的字符串为:"+str+  "填充后的字符串为:"+fillBefore(str,'a',8));
		System.out.println("填充前的字符串为:"+str+  "填充后的字符串为:"+fillBefore(str,'a',5));
		System.out.println("*************************************");
		//3.在字符串后填充
		String str1="lsm";
		System.out.println("填充前的字符串为:"+str1+  "填充后的字符串为:"+fillAfter(str1,'d',5));
		System.out.println("填充前的字符串为:"+str1+  "填充后的字符串为:"+fillAfter(str1,'d',3));
		System.out.println("*************************************");
		//4.移除字符串中所有给定字符串
		CharSequence str2="ttz-lsm-zwd-mmd";
		System.out.println("移除前的字符串为:"+str2+  "移除后的字符串为:"+removeAll(str2,"-"));
		System.out.println("*************************************");
		//5.反转字符串
		String str3="abcde";
		System.out.println("反转前的字符串:"+str3+    "反转后的字符串为:"+reverse(str3));
		System.out.println("*************************************");
	}   
}

运行结果:
在这里插入图片描述

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml? 本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。 阅读详情

相关推荐

利用LTspice设计Pt100测温电路

是一种广泛使用的温度传感器,它属于(RTD, Resistance Temperature Detector)的类型,通常用于温度测量。在0°C时,的电阻值为100欧姆,且它的电阻值会随着温度的升高而升高。PT100热电阻温度阻值对应表)因此可以根据这一特性来检测出环境温度。

2301_77033628的博客 2418

模拟实现一个简单的string类

类,包含了常用的字符串操作,比如初始化、字符串拼接、长度获取、索引访问、大小写转换、相等判断等功能。请根据需求进行适当的修改和扩展。这个示例中,定义了一个简单的。

高性价比服务器就选:蓝易云 587

osgearth2.10 demo功能介绍

osgearth-2.10 demo: 说明: 1、运行环境win7 x64 旗舰版,CPU i5-6400 8核,8G内存; 2、括号内是对应demo的测试参数(.earth); 3、配置OSG_FILE_PATH; 4、参数命令行可以查看各个demo需要的输入参数; 5、前缀说明:gui界面程序、cmd控制台程序、non功能未知; 6、程序后括号里的non表示不需要通过命令行输入参数; 示例: 1、gui:osgearth_3pv(simple.earth):相机与地球的投影关系,Range表示相机

rach09的专栏 2423

String对象的两种赋值方式解析与String str=new String(“abc“)创建了几个对象

一、String对象的两种赋值方式解析 new String(“abc”) & 直接赋值 1、new String(“abc”) 网上摘录: 系统会先创建一个匿名对象(暂且叫A),值为”abc”,存入堆内存,然后new关键字会在堆内存中又开辟一块新的空间(即创建一个新对象B),然后把值”abc”存进去,并且把B对象的地址返回给栈内存中的str, 此时A对象成为了一个垃圾对象,因为它没有被任何栈中的变量指向,会被GC自动回收。 暂时对这段话有疑问。 目前我的理解是: 首先会去常量池中找有没有一

qq_53502890的博客 3606

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。还原数据库时把序列取消勾选,选择不还原序列。因为还原表的同时,会自动将自增序列还原上去,此处勾选会导致数据库重复创建序列。点击还原数据库完毕后,可以看到序列仅有一个,没有出现重复序列。但此时的序列当前值是从1开始的,需要重置。点击菜单“其它”-》“序列”,可以看到有多个重复序列。

奋斗鱼 1043

C++中string的赋值

关于C++STL标准库的string字符串赋值方法,对于一些刚接触C++的同学而言还是比较难以理解的。因为string字符串的赋值有别于一般数组。 下面我们来看: 一、一般的数组赋值在VC6.0下的运行结果: #include<iostream> #include<string> using namespace std; int main() { char a[5]={'...

weixin_43840338的博客 4万+

Colmap中 patchmatch源码

惊世骇俗的Colmap PatchMatch源码 500多行,简明易懂 先了解PatchMatch的options: max_image_size: 任一维度的最大图像尺寸 gpu_index: gpu的下标 depth_min,depth_max: 随机采样的深度范围 window_radius:用于计算NCC(两图片的归一化互相关),NCC的计算需要用到 win_size. 图像匹配 | NCC 归一化互相关损失 | 代码 + 讲解 - 知乎 (zhihu.com) window_step: 用.

qq_24884193的博客 2210

string 类的扩展方法

string 类的扩展方法列表(基本相同于 IEnumerable 接口的成员列表): Aggregate//累加 All//是否都满足条件 Any//是否有一个满足条件 AsEnumerable// AsParallel// AsQueryable// Average//平均值 Cast// Concat//连接 Contains//是否包含 Count//总数 DefaultIfEmp

lswlovetsw的专栏 691

C#对接EtherNet/IP协议 完整版|罗克韦尔AB PLC通信+CIP核心概念全解析

你做罗克韦尔(AB) PLC工业上位机开发,是唯一的首选协议,没有之一!EtherNet/IP(Ethernet Industrial Protocol)是基于标准以太网的工业级通信协议,由罗克韦尔自动化主导开发,是ODVA(开放设备网络供应商协会)主推的工业以太网标准,也是目前全球应用最广泛的工业以太网协议之一。原生适配罗克韦尔AB PLC:Micro800、CompactLogix、ControlLogix、Micro850等全系AB PLC原生标配EtherNet/IP,无需额外配置,开箱即用;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 895

零基础做完YOLOv8船只检测系统:HRSC2016数据集 + 完整UI,稳过答辩

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

FJN110的博客 108

String类详解笔记----拓展

目录 String类对象实例化 字符串比较 字符串常量 两种实例化方式比较(共享设计模式的应用) 字符串常量池 字符串修改分析 主方法组成分析 String类常用方法 JavaDoc文档介绍 字符串与字符 字符串与字节 字符串比较 字符串查找 字符串替换 字符串拆分 字符串截取 字符串格式化 其他操作方法 本章概要 引言:在实际项目开发中,String是一个必须使用的程序类,可以说是项目的核心组成类。在java程序里所有的字符串都要使用"“进行定义,同时也可以利

m0_57249797的博客 215

基于射频技术的校园无人超市管理系统_360

本设计实现了一种基于射频技术的校园无人超市管理系统,系统集成了环境监测与商品管理两大核心模块。在环境监测部分,采用DHT11温湿度传感器与MQ2烟雾传感器对超市内部环境进行实时监测,结合温控与报警机制,实现自动通风与烟雾报警功能,并通过1.44寸SPI LCD显示屏进行本地信息显示。商品管理部分基于RC522-RFID读卡器完成商品识别,结合Qt上位机软件实现顾客自助选购与结算,同时支持管理员进行商品入库与会员卡管理等操作。系统采用STM32F103RCT6为主控核心,结合串口通信方式与Qt开发的上位机进行

377

java string 扩展_【Java】String类扩展功能实现

//String类扩展功能实现public class Strings{/*** 重复某个字符** 例如:* 'a' 5 => "aaaaa"* 'a' -1 => ""** @param c 被重复的字符* @param count 重复的数目,如果小于等于0则返回""* @return 重复字符字符串*/public static String repeat(char...

weixin_30765637的博客 567

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

String 类扩展功能的实现

对于String类进行相应的扩展方法: //String类扩展功能实现 public class Strings{ /** * 重复某个字符 * * 例如: * 'a' 5 =&gt; "aaaaa" * 'a' -1 =&gt; "" * * @param c 被重复的字符 ...

Summer___Hui的博客 351

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java—String类扩展功能实现

//String类扩展功能实现 public class Strings{ /** * 1.重复某个字符 * * 例如: * 'a' 5 =&gt; "aaaaa" * 'a' -1 =&gt; "" * * @param c 被重复的字符 * @param count 重复...

qq_39663771的博客 1014

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

String类扩展功能实现

//String类扩展功能实现 public class Strings{ /** * 重复某个字符 * * 例如: * 'a' 5 => "aaaaa" * 'a' -1 => "" * * @param c 被重复的字符 * @param count 重复...

wxj_enchanted的博客 437

【Java】String类扩展功能实现

重复某个字符 //String类扩展功能实现 public class Strings{ /** * 重复某个字符 * * 例如: * 'a' 5 =&gt; "aaaaa" * 'a' -1 =&gt; "" * * @param c 被重复的字符 * @param count 重复...

Qingmou's_blog 1155

Java —— String类扩展功能实现

实现功能: 重复某个字符 将已有字符串填充为规定长度,如果已有字符串超过这个长度则返回这个字符串,字符填充于字符串前 同2,字符填充于字符串后 移除字符串中所有给定字符串 反转字符串 代码: public class Strings{ public static void main(String[] args){ //1. System.out.println(repeat('...

cerf-volant的博客 462

Java:String类扩展功能实现

public class Test20{ public static void main(String [] args){ //第一个 System.out.println(&quot;--------------&quot;); System.out.println(&quot;给定字符为s长度为6&quot;); repeat('s',6); System.out.println(&quot;给定字符为h长度为0&quot;)

qq_43220266的博客 602

String类扩展功能实现——重复某字符、字符填充、移除给定字符、反转字符串

       /**      * 重复某个字符      *      * 例如:      * 'a' 5   =&gt; "aaaaa"       * 'a' -1  =&gt; ""      *      * @param c     被重复的字符      * @param count 重复的数目,如果小于等于0则返回""      * @return 重复字符字符串      */...

O9A0MA的博客 882

(C/C++)扩展String类

扩展String类 题目:扩展String类,引入头文件CString.h,它的内容如下: #include using namespace std; class String{ protected: char *mystr; int len; public: String(const char *p){ len = strlen§; mystr = new char[len+1]; strcp...

hua12ng的博客 1357

扩展String类

因为.Net Framework中的String类是封闭的,所以我们不能从它进行派生来扩展它的功能。 虽然String类已经提供了很多有用的方法来让我们进行字符串的处理和操作,但是有时候一些特殊的的要求还是不能能到满足。 一个例子就是:假如有一个因为句子,比如:“how are you”,我们需要把每个单词的首字母都改成大写,当然人工改写很大一篇文章是很费力的,但是我...

aasagk80068的博客 182

码图 扩展String类(C++)

题 号: 156 扩展String类(C++) 语言要求: C++  扩展String类,引入头文件CString.h,它的内容如下: #include <iostream> using namespace std; class String{ protected: char *mystr; int len; public: String(const char *p){ len = strlen(p); mystr = new char[len+1]; strcpy(mys.

chenxj595的博客 1079

JavaScript学习总结(十四)——JavaScript编写类的扩展方法

JavaScript学习总结(十四)——JavaScript编写类的扩展方法   在​J​a​v​a​S​c​r​i​p​t​中​可以使​用​类的p​r​o​t​o​t​y​p​e属性来​扩​展​类的属​性​和​方​法,在实际开发当中,当JavaScript内置的那些类所提供的动态方法和动态属性不满足我们实际开发时,我们就可以通过"prototype"属性给自定义类添加方法和属性或者扩展原有的类中的方法和属性。 一、扩展JavaScript内置类,添加动态方法 语法格式:   类名.prototype.方法

a754315344的博客 1268

C++入门-string类

首先,我们定义一个简化版的字符串类MyStringchar* data: 存储字符串的字符数组: 字符串的长度构造函数、析构函数、赋值操作符等基本方法private:char* data;public:// 构造函数// 析构函数// 拷贝构造函数// 赋值操作符重载if (this!// 打印字符串。

Choulqt的博客 817
上一篇: Java数组小练习
下一篇: 面向对象编程——类与对象(定义、使用、封装、构造方法)
Lefdr
博客等级 码龄9年 16粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值