java 获取指定截取字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 获取指定截取字符串相关的知识,希望对你有一定的参考价值。

如字符串:<row type="singletextline" caption="Name" ID="请输入您的姓名"
options="" CurrentValue="1" others="width=10"/>
怎么获取引号内的值. 输出string1="singletextline" string2="Name" string3="请输入你的姓名"....string4="" ...........??

可以通过java的”substring“方法截取出对应的字符串,前提是知道开始和结束的字符串的值:
String getSignInfo = reqResult.substring(reqResult.indexOf("<sign>") + 6, reqResult.indexOf("</sign>"));
解释:上述方法就是截取reqResult字符串的中开始”<sign>“和结束”</sign>“中间部分的内容,”6“就是”<sign>“的长度,之后将获取的结果赋值给”getSignInfo进行输出即可“;
备注:以上方法通用于截取字符串,数字”6“和开始结束字符串根据实际需要修改即可。
参考技术A public static void main(String[] args) 
        String str = 
"<row type=\\"singletextline\\" caption=\\"Name\\" ID=\\"请输入您的姓名\\" 
options=\\"\\" CurrentValue=\\"1\\" others=\\"width=10\\"/>" ;
        int idx = str.indexOf("\\"") ;
        int nextIdx = str.indexOf("\\"", idx + 1) ;
        while( idx!=-1 && nextIdx!=-1 ) 
            System.out.println( str.substring(idx +1 , nextIdx  )  ) ;
            idx = str.indexOf("\\"",nextIdx +1 ) ;
            nextIdx = str.indexOf("\\"", idx +1 ) ;
        
    

参考技术B public static void test1()

  String str = "<row type=\\"singletextline\\" caption=\\"Name\\" ID=\\"请输入您的姓名\\" options=\\"\\" />";

  Pattern p = null;

  p = Pattern.compile(".+?=\\\\\\"(.+?)\\\\\\".+?");

  Matcher m = p.matcher(str);

  System.out.println("=====");

  if(m.matches())

   System.out.println("string1="+m.group(1));

  

 

提供这段代码给你,可以提取出singletextline,利用循环就可以把其他提取出来了,自己多动手吧

追问

如图string 是动态获取的,所以不能加\\ 那要怎么搞a   如果按照取=号后的值,和空格前的值p = Pattern.compile(".+?=\\\\\\"(.+?)\\\\\\".+?");  这条语句改怎么改? 正则表达式神马的忘完了~求指导~

追答

p = Pattern.compile(".+?=\"(.+?)\".+?");
没有\那就转义"就行啦

参考技术C Pattern p = Pattern.compile("\\"(.*?)\\"");
Matcher m = p.matcher(content);
while(m.find())
System.out.println(m.group(1));

追问

这方法可用,但我这样写只是输出一条阿,字符串str是动态获取的不可修改。

Pattern p = Pattern.compile("\\"(.*?)\\"");要怎么改吗??

追答public static void main(String[] args) throws ParseException 
  String content = "<row type=\\"singletextline\\" caption=\\"Name\\" ID=\\"请输入您的姓名\\" options=\\"\\" CurrentValue=\\"1\\" others=\\"width=10\\"/>";
  Pattern p = Pattern.compile("\\"(.*?)\\"");
  Matcher m = p.matcher(content);
  while(m.find())
   System.out.println(m.group(1));
  
 

singletextline
Name
请输入您的姓名

1
width=10

本回答被提问者采纳
参考技术D 1、length() 字符串的长度
  例:char chars[]='a','b'.'c';
    String s=new String(chars);
    int len=s.length();
2、charAt() 截取一个字符
  例:char ch;
    ch="abc".charAt(1); 返回'b'
3、getChars() 截取多个字符
  void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
  sourceStart指定了子串开始字符的下标,sourceEnd指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。接收字符的数组由target指定,target中开始复制子串的下标值是targetStart。
 例:String s="this is a demo of the getChars method.";
    char buf[]=new char[20];
    s.getChars(10,14,buf,0);
4、getBytes()
  替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()。
5、toCharArray()
6、equals()和equalsIgnoreCase() 比较两个字符串
7、regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。
  boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)
  boolean regionMatches(boolean ignoreCase,int startIndex,String str2,int str2StartIndex,int numChars)
8、startsWith()和endsWith()
  startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束
9、equals()和==
  equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。
  例:String s1="Hello";
    String s2=new String(s1);
    s1.eauals(s2); //true
    s1==s2;//false
10、compareTo()和compareToIgnoreCase() 比较字符串
11、indexOf()和lastIndexOf()
  indexOf() 查找字符或者子串第一次出现的地方。
  lastIndexOf() 查找字符或者子串是后一次出现的地方。
12、substring()
  它有两种形式,第一种是:String substring(int startIndex)
         第二种是:String substring(int startIndex,int endIndex)
13、concat() 连接两个字符串
14 、replace() 替换
  它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
  String replace(char original,char replacement)
  例如:String s="Hello".replace('l','w');
  第二种形式是用一个字符序列替换另一个字符序列,形式如下:
  String replace(CharSequence original,CharSequence replacement)
15、trim() 去掉起始和结尾的空格
16、valueOf() 转换为字符串
17、toLowerCase() 转换为小写
18、toUpperCase() 转换为大写
19、StringBuffer构造函数
  StringBuffer定义了三个构造函数:
  StringBuffer()
  StringBuffer(int size)
  StringBuffer(String str)
  StringBuffer(CharSequence chars)
  
  (1)、length()和capacity()
    一个StringBuffer当前长度可通过length()方法得到,而整个可分配空间通过capacity()方法得到。
  
  (2)、ensureCapacity() 设置缓冲区的大小
    void ensureCapacity(int capacity)
  (3)、setLength() 设置缓冲区的长度
    void setLength(int len)
  (4)、charAt()和setCharAt()
    char charAt(int where)
    void setCharAt(int where,char ch)
  (5)、getChars()
    void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
  (6)、append() 可把任何类型数据的字符串表示连接到调用的StringBuffer对象的末尾。
    例:int a=42;
      StringBuffer sb=new StringBuffer(40);
      String s=sb.append("a=").append(a).append("!").toString();
  (7)、insert() 插入字符串
    StringBuffer insert(int index,String str)
    StringBuffer insert(int index,char ch)
    StringBuffer insert(int index,Object obj)
    index指定将字符串插入到StringBuffer对象中的位置的下标。
  (8)、reverse() 颠倒StringBuffer对象中的字符
    StringBuffer reverse()
  (9)、delete()和deleteCharAt() 删除字符
    StringBuffer delete(int startIndex,int endIndex)
    StringBuffer deleteCharAt(int loc)
  (10)、replace() 替换
    StringBuffer replace(int startIndex,int endIndex,String str)
  (11)、substring() 截取子串
    String substring(int startIndex)
    String substring(int startIndex,int endIndex)

JS截取指定字符串到指定字符串之间的内容

参考技术A

var str="<123>asdadsadsa<456>";

str = str.match(/<123>(\\S*)<456>/)[1];

console.log(str);

\\S:匹配任何非空白字符。

*:匹配前面的子表达式零次或多次。

match方法:

语法:

stringObject.match(searchvalue)

stringObject.match(regexp)

searchvalue:必需。规定要检索的字符串值。

regexp:必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。

如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组。

例如:

"186a619b28".match(/\\d+/g); 

如果上面的匹配不是全局匹配,那么得到的结果如下:

["186", index: 0, input: "186a619b28"]。

扩展资料:

常用的正则字符

1、\\ : 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。

2、^:匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 'n' 或 'r' 之后的位置。

3、$:匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 'n' 或 'r' 之前的位置。

4、+:匹配前面的子表达式一次或多次。

5、?:匹配前面的子表达式零次或一次。

6、n:n 是一个非负整数。匹配确定的 n 次。

7、n,:n 是一个非负整数。至少匹配n 次。

8、n,m:m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。请注意在逗号和两个数之间不能有空格。

9、?:当该字符紧跟在任何一个其他限制符 (*, +, ?, n, n,, n,m) 后面时,匹配模式是非贪婪的。

非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

以上是关于java 获取指定截取字符串的主要内容,如果未能解决你的问题,请参考以下文章

字符串中怎么截取指定字符的前面的字符和后面的字符

java字符串截取指定下标位置的字符串

java怎么截取指定字符之后的字符串

java怎么截取字符串?

java中如何截取字符串中的指定一部分

java的subString,可以截取指定字符到该行的末尾吗?