在matcher.replace方法中,只有:
replaceFirst()和replaceAll()两种方法
我想限制更换3次,怎么办?
例:
String content="aaaaaaaaaa";
Run Code Online (Sandbox Code Playgroud)
我想得到的结果是: "bbbaaaaaaa"
我的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T1 {
public static void main(String[] args) {
String content="aaaaaaaaaa";
Pattern pattern = Pattern.compile("a");
Matcher m=pattern.matcher(content);
if(m.find()){
String result=m.replaceFirst("b");
System.out.println(result);
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我正在阅读关于使用StringBuilder与StringBuffer的Stackoverflow 线程.
底线似乎是两个集合,不同的是一个StringBuffer同步同样的事情,是线程安全的,确实有点少以及在性能上相比StringBuilder的不属于那些东西.
有人提到了ArrayList和Vector之间存在类似关系的方式.
除非我有意识地创建多个线程,否则不使用同步集合(或其他任何东西)是一个好的(安全的)经验法则吗?
换句话说,我收到消息"尽可能使用新的StringBuilder.",我想知道的是,我怎么能确定它是否可能?
我是否安全使用非同步集合,只要我不故意创建新线程?
String和(StringBuilder或StringBuffer)之间存在许多差异,例如可变性和许多字符串操作
可能这个问题看起来有点傻,但我想知道编程范式.
我想问一下,为什么Java实现了另一个类,StringBuilder或者StringBuffer像数据结构那样String.为什么他们自己没有给出这些功能String.
为什么不把String本身线程安全的,或提供一些额外的功能StringBuilder或StringBuffer有?
我正在学习算法实现课程.我的老师提到了StringBuffer和StringBuilder,他说StringBuffer比StringBuilder更安全,因为在线程方面.真的吗?如果是这样,那意味着什么?我查了一下这个问题,很多答案都提到了同步.任何人都可以解释这意味着什么,以及如何使StringBuffer比StringBuilder更安全?
选择StringBuffer和之间的标准StringBuilder
public class Log {
private static StringBuilder log = new StringBuilder();
private static StringBuilder getLog() {
return log;
}
public static void addToLog(String id, String name, String field, String operator, String value, String bValue) {
Calendar calendar = Calendar.getInstance();
String currentTime = formatter.format(calendar.getTime());
getLog().append(currentTime); // line 114
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
[java] Exception in thread "Thread-5" java.lang.ArrayIndexOutOfBoundsException
[java] at java.lang.String.getChars(String.java:863)
[java] at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:416)
[java] at java.lang.StringBuilder.append(StringBuilder.java:132)
[java] at com.retroficiency.system.Log.addToMatchingLog(Log.java:114)
Run Code Online (Sandbox Code Playgroud)
这种方法通常工作正常,但我们遇到了这个随机错误,我无法弄清楚为什么.有一个单独的方法可以将日志刷新到文件并使用以下方法清除它:
getLog().delete(0, getMatchingLog().length());
Run Code Online (Sandbox Code Playgroud)
我不认为这是一个Java bug?它变得太长了吗?谢谢你的帮助!
StringBuffer如何在内部处理字符串?我尝试运行下面的例子并得到答案为"字符串是不相等的".
据我所知,如果两个字符串具有相同的值,则equals()返回true.那么在这种情况下发生了什么?
class StringBufferTest {
public static void main(String[] args) {
String newString = "HelloWorld";
StringBuffer buffer = new StringBuffer(newString);
if (buffer.equals(newString)) {
System.out.println("Strings are equal");
} else {
System.out.println("String are unequal");
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道StringBuilder和StringBuffer类之间的区别以及它们的实际用途.所以,我编写了2个代码片段,其中我同时产生了3个线程,这些线程使用了StringBuilder和StringBuffer对象.
当我运行代码时,我希望所有3个线程在StringBuilder的情况下同时运行,并且在StringBuffer的情况下以同步方式运行.但在两种情况下,它们以同步的方式运行.那么StringBuffer类的用途是什么?:confused:
(对于String对象,所有3个线程同时运行).我将分享代码片段供您参考.如果我在理解多线程本身的概念时错了,请纠正我.还请,还要更正代码.
// StringBuilder...
public class MultiTread implements Runnable{
private StringBuilder name;
public MultiTread(StringBuilder string){
name=string;
}
public void run(){
for(int i=0; i<=10; i++){
System.out.println(name.append(i));
}
}
public static void main(String[] args){
Thread th = new Thread(new MultiTread(new StringBuilder("thread1:")));
Thread th1 = new Thread(new MultiTread(new StringBuilder("thread2:")));
Thread th2 = new Thread(new MultiTread(new StringBuilder("thread3:")));
th.start();
th1.start();
th2.start();
}
}
..................
//StringBuffer...
public class MultiTreadBuf implements Runnable{
private StringBuffer name;
public MultiTreadBuf(StringBuffer string){
name=string;
}
public void run(){
for(int i=0; i<=10; …Run Code Online (Sandbox Code Playgroud) 我有一个java类,我在其中存储一个枚举.(显示在这个问题的底部)在这个枚举中,我有一个名为toCommaSeperatedString()的方法,它返回一个逗号分隔的枚举值String.我在这里阅读了一些关于性能的信息后,我正在使用StringBuilder .
我将这个枚举值转换为commaSeperatedString的方式是这样做的最有效方式,如果是这样,那么在String的最后一个字符处删除额外逗号的最有效方法是什么?
例如,我的方法返回,123, 456,但我更喜欢123, 456.如果我想返回,PROPERTY1, PROPERTY2我可以很容易地使用Apache Commons库StringUtils.join(),但是,getValue当我迭代String数组时,我需要通过调用方法来降低一级.
public class TypeEnum {
public enum validTypes {
PROPERTY1("123"),
PROPERTY2("456");
private String value;
validTypes(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public static boolean contains(String type) {
for (validTypes msgType : validTypes.values()) {
if (msgType.value.equals(type)) {
return true;
}
}
return false;
}
public static String toCommaSeperatedString() {
StringBuilder commaSeperatedValidMsgTypes = new StringBuilder();
for(validTypes …Run Code Online (Sandbox Code Playgroud) 我想知道StringBuilder和StringBuffer之间的区别.在StringBuffer中,它自动分配16个字符.当我们添加一个字符串"hello"时,它的容量增加到21.可以有人澄清我的怀疑吗?
所以我必须写一个java代码:
我知道Java Character类有方法isLowerCase(),isUpperCase,toLowerCase()和toUpperCase(),你可以用它们逐个字符地查看字符串.如果第一个字符是小写,则将其转换为大写,对于每个后续字符,如果字符为大写,则将其转换为小写.
问题是我如何检查每封信?它应该包含什么样的变量和字符串?你能帮忙吗?
java ×11
stringbuffer ×4
string ×3
algorithm ×1
collections ×1
enums ×1
logging ×1
regex ×1
synchronize ×1
synchronized ×1
title-case ×1