替换括号中的单词

时间:2017-04-08 03:53:59

标签: java string replace

我有一个关于替换单词的问题。我有一些字符串,每个字符串都是这样的:

  

String string =“今天是(快乐)的一天,我想(探索)更多关于Java的信息。”

我需要替换带括号的单词。我想用“学习”代替“(快乐)”,用“学习”代替“(探索)”。

我有一些想法,但我不知道如何。

for (int i = 0; i <= string.length(), i++) {
  for (int j = 0; j <= string.length(), j++
    if ((string.charAt(i)== '(') && (string.charAt(j) == ')')) {
      String w1 = line.substring(i+1,j);
      string.replace(w1, w2)
    }
  }
}

我的问题是我只能用一个新单词替换一个单词......

我正在考虑使用扫描仪提示我换一个新词然后更换它,我该怎么做?

6 个答案:

答案 0 :(得分:2)

appendReplacement的{​​{1}}和appendTail方法就是为此目的而设计的。您可以使用正则表达式扫描您的模式 - 一对中间带有单词的括号 - 然后执行您需要做的任何事情以确定要替换它的字符串。请参阅javadoc

一个例子,基于javadoc中的示例。我假设你有两种方法,Matcher告诉你要用什么代替单词(以便replacement(word)在你的例子中等于replacement("happy")),{{1告诉该单词是否有替换。

"good"

答案 1 :(得分:0)

你可以做的是运行一个从0到length-1的循环,如果循环遇到a(然后将其索引分配给temp1变量。现在只要你遇到就继续)。将索引分配给temp2。现在你可以使用string.replace替换那个子串(string.substring(temp1 + 1,temp2),&#34;你想要的字符串&#34;))。

答案 2 :(得分:0)

无需使用嵌套循环。更好地使用一个循环并在找到左括号时存储索引,也可以用于闭括号并将其替换为单词。继续相同的循环并存储下一个索引。当您替换相同字符串中的单词时,它会更改字符串的长度,您需要维护字符串的副本并执行循环并替换不同的字符串,

答案 3 :(得分:0)

不要使用嵌套for循环。搜索<!DOCTYPE html> <html> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <body ng-app="myApp" ng-controller="myCtrl"> <div id="name" ng-repeat="x in friends"> {{x.name}} {{x.age}} </div> <script> var app = angular.module("myApp", []); app.controller("myCtrl", function($scope) { $scope.friends = [ {name:'John', age:25, gender:'boy'}, {name:'Jessie', age:30, gender:'girl'}, {name:'Johanna', age:28, gender:'boy'} ]; }); </script> </body> </html>mapObject.on('zoomstart',(e) =>{ //you can stop the event here and call your own function, }); 的匹配项。获取这两个字符之间的子字符串,然后将其替换为用户输入的值。这样做,直到剩下()组合为止。

(

答案 4 :(得分:0)

此代码段适用于我,只需加载HashMap以替换并迭代:

import java.util.*;

public class Test
{
    public static void main(String[] args) {
        String string = "today is a (happy) day, I would like to (explore) more about Java.";
        HashMap<String, String> hm = new HashMap<String, String>();
        hm.put("\\(happy\\)", "good");
        hm.put("\\(explore\\)", "learn");

        for (Map.Entry<String, String> entry : hm.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            string = string.replaceAll(key, value);
        }
        System.out.println(string);
    }
}

请记住,replaceAll采用正则表达式,因此您希望它显示"\(word\)",这意味着必须转义斜杠本身。

答案 5 :(得分:0)

使用以下代码替换字符串。

    <?php

    $con=mysql_connect("localhost","root","root") Or die('not connected');
    mysql_select_db("studyagain",$con);


    ?>

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <?php
    if($_GET["id"]){
        $updateid=$_GET["id"];
    }

    $query="select * from student where id='$updateid' ";
    $result=mysql_query($query);
    $row=mysql_fetch_array($result);
    ?>
    <form action="" method="post" enctype="multipart/form-data"> 
    <table> 
    <tr>
    <td>
        First Name:<input type="text" name="fname" value="<?php echo $row["name"];?>">
    </td>

    </tr>
    <tr>
        <td>
        Last Name:&nbsp;<input type="text" name="lname" value="<?php echo $row["lname"];?>">
    </td>
    </tr>
    <tr>
        <td>

        //here i want the option value in edit mode
Age:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<select name="age" >
            <option >Select Age</option>
        <?php $getoptions = agedropdown(); ?>
        <?php foreach ($getoptions as $key => $value) { ?>

                    <option><?= $value ?></option>
        <?php } ?>
        </select>
        </td>
    </tr>
    <tr>
    <td>
        College:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="collg" value="<?php echo $row["collgname"];?>">
    </td>

    </tr>
    <tr>
    <td>
    City:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" name="city" value="<?php echo $row["city"];?>">
    </td>
    </tr>
    <tr>
        <td>
            <input type="submit" name="sub">
        </td>
    </tr>

    </table>
    </form>

    </body>
    </html>
    <?php
    if(isset($_POST['sub'])){
        $fname=$_POST['fname'];
        $lname=$_POST['lname'];
        $age=$_POST['age'];
        $collg=$_POST['collg'];
        $city=$_POST['city'];

    $query="insert into student set name='$fname',lname='$lname',age='$age',collgname='$collg',city='$city'";
    if(mysql_query($query)){
        echo "Data Inserted";
    }
    else{
        echo "Data Not inserted".mysql_error();
    }
    }


    ?>





    <?php

    function agedropdown(){

        $range=range(1,110);
        foreach ($range as  $value) {

        }
        return $range;
    }

    ?>

            it is the code i want option default value on edit from database not getting value on edit mode in select box age is not get selected on edit mode.so pls help me regarding this..


            my db table Is:

            CREATE TABLE `student` (
              `id` int(20) NOT NULL AUTO_INCREMENT,
              `name` varchar(20) NOT NULL,
              `lname` varchar(20) NOT NULL,
              `age` int(20) NOT NULL,
              `collgname` varchar(20) DEFAULT NULL,
              `city` varchar(20) NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

    data in table is given below:

        | id | name   | lname  | age | collgname | city  |
        +----+--------+--------+-----+-----------+-------+
        |  1 | Gaurav | pandey |  11 raj      | nepal |
        +----+--------+--------+-----+-----------+-------+
         data i have in table is